R:没有for循环的data.table中的列总和

时间:2015-02-09 18:27:51

标签: r for-loop sum data.table

我有一个以下结构的data.table:

DT = data.table(ID = rep(c("A", "B"), each=5), 
                DY = 1:5, 
                S = c(0, 50, 50, 200, 50, 5, 20, 5, 20, 25))

data.table应由列C添加,其条目只是按照ID分组的1:5中DY i的总和。 上面例子的结果是

DT[, C:=c(0, 50, 100, 300, 350, 5, 25, 30, 50, 75)]

正如我所描述的,for循环是获得我想要的结果的第一选择。但是,有没有更好的方法在没有for循环的情况下计算C,特别是使用data.table-package的功能?

1 个答案:

答案 0 :(得分:4)

根据显示的结果,您可能需要{“1”}按“ID”分组的“S”列

cumsum

如果你需要改回来,就像@eddi建议的那样

 DT[, C:=cumsum(S), by = ID]