【发布时间】:2019-08-07 01:10:21
【问题描述】:
这非常困难,但我正在尝试按照标题所说的进行操作,例如假设我有一个数据表dat,并且我正在尝试计算新列中的累积总和(从第 1 列到第 3 列,当它出现在第二列中的任何组的第 2) 时。
dat = data.table(A=c(1,2,3,1,4,5,1,2,3),B=c(1,1,1,NA,1,NA,2,NA,2),C=c(1,12,24.2,251,2,1,2,3,-1))
dat[,cumsum:=0]
所以数据看起来像
> dat
A B C
1: 1 1 1.0
2: 2 1 12.0
3: 3 1 24.2
4: 1 NA 251.0
5: 4 1 2.0
6: 5 NA 1.0
7: 1 2 2.0
8: 2 NA 3.0
9: 3 2 -1.0
我希望输出是这样的:
> dat
A B C cumsum
1: 1 1 1.0 1
2: 2 1 12.0 1
3: 3 1 24.2 1
4: 1 NA 251.0 0
5: 4 1 2.0 252
6: 5 NA 1.0 0
7: 1 2 2.0 12
8: 2 NA 3.0 0
9: 3 2 -1.0 15
有没有一种有效的数据表方法来做到这一点?我可以用循环来做到这一点,但这会很慢,我觉得这必须以一种更具可扩展性的方式可行,但我被卡住了。
【问题讨论】:
-
@chinsoon12 已修复,你是对的
标签: r data.table