小编Mag*_*ggg的帖子

ID累计滞后

我想通过ID创建一个累加的总和。但是,它不应将属于正在计算的行的值相加。

我已经尝试过cumsum。但是,我不知道如何添加一条语句,该语句指定不添加进行求和的行的数量。我要查找的结果列是名为“ sum”的第三列。

例如,对于ID 1,第一行是sum = 0,因为不应添加该行。但是,对于ID 1和第2行,sum = 100,因为第2行之前的ID 1的数量为100,依此类推。

   id amount sum
1:  1    100   0
2:  1     20 100
3:  1    150 120
4:  2     60   0
5:  2    100  60
6:  1     30 270
7:  2     40 160 
Run Code Online (Sandbox Code Playgroud)

这是我尝试过的:

  df[,sum:=cumsum(amount),
      by ="id"] 

  data: df <- data.table(id = c(1, 1, 1, 2, 2,1,2), amount = c(100, 20, 
  150,60,100,30,40),sum=c(0,100,120,0,60,270,160) ,stringsAsFactors = 
  FALSE)
Run Code Online (Sandbox Code Playgroud)

datatable r multiple-conditions cumulative-sum

3
推荐指数
1
解决办法
108
查看次数