我有一个以下结构的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的功能?
答案 0 :(得分:4)
根据显示的结果,您可能需要{“1”}按“ID”分组的“S”列
cumsum
如果你需要改回来,就像@eddi建议的那样
DT[, C:=cumsum(S), by = ID]