如何通过添加两个备用列的值来获得最高金额?

时间:2016-03-18 07:26:35

标签: r

我有以下时间序列,行Nr列只是为了清楚起见。

    TIME            A      B     Row Nr

    09:00:00.009   -2      1     1
    09:00:00.009    0     -1     2
    09:00:03.051    1     -2     3
    09:00:03.053   -1      1     4
    09:00:03.220   -3      2     5
    09:00:03.222   -5      2     6
    09:00:03.224    3     -4     7
    09:00:03.225    2     -3     8
    09:00:03.228   -1      0     9

示例 对于具有更改列A = 0和B = 1的最小值的测试,我们从列A开始,它将如下所示:

Row nr:

  1. A = -2小于0,所以什么都不做。 Sum = 0
  2. A = 0,因此移至B栏并将0添加到Sum。
  3. B = -2,小于1,所以什么都不做。
  4. B = 1,移至a并将sum加1,Sum = 1
  5. A = -3,小于0.什么都不做。
  6. A = -5,什么都不做。
  7. A = 3,移至B. Sum = 1 + 3 = 4
  8. B = -3,什么也不做。
  9. B = 0,什么都不做。
  10. 以最小参数A = 0和B = 1运行后,Sum为4。如何找到导致最大总和的最小A和B的参数?

    我保留下面问题的旧解释。这将在很多时候在大型数据集上完成。

    我需要在经历时间系列时在A,B列上。我可以随时从A列移动到B,然后将A列中该行的值添加到总和中,然后我可以在此后的任何一行从B列转到A并将B值添加到我的总和中

    我可以在列之间移动尽可能多的时间,而且我不会以最大的总和来结束。

    我现在正在寻找的是两个最小值,一个是使我从A移动到B的最小值,另一个是从B移动到A的最小值。

    我正在寻找的是,是否有一些软件包可以解决这类问题,或者可能会提供一些提示,以寻求更好的解决方案而不是暴力破解。我会做很多,所以表现是一个因素._

1 个答案:

答案 0 :(得分:1)

如果你只想要行的最大值之和,那就是:

with( dfrmname , sum( pmax(A ,B) ) # should be quite fast.

如果你想构建一个累积和,那就是:

with( dfrmname , cumsum( pmax(A ,B) )