我正在尝试根据另一列的计算值计算列中的值。
DT <- data.table(X = c("a","a","a", "b","b","b", "c","c","c"),
Y = rep(c(1,2,3),3),
z1 = c(10, 11,12),
z2 = c(1,2,3))
这里在DT中,我想计算一个新的列Z,它是每个X的第一行的z1和z2之和。下一行计算应该从先前计算的Z +当前行z2完成所有行的“a” ”。类似地,对于“b”,“c” 我确实试过“for”循环,但没有成功。 最终结果如下所示。
X Y z1 z2 Z
a 1 10 1 11
a 2 11 1 12
a 3 12 1 13
b 1 10 2 12
b 2 11 2 14
b 3 12 2 16
c 1 10 3 13
c 2 11 3 16
c 3 12 3 19
答案 0 :(得分:2)
您可以使用
DT[, Z := cumsum(z2) + z1[1], by= X]