根据data.table中其他列中的计算值计算列中的滚动总和

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了根据data.table中其他列中的计算值计算列中的滚动总和相关的知识,希望对你有一定的参考价值。

我试图从另一列的计算值计算列中的值。

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的和。下一行计算应该从先前计算的所有行“a”的Z +当前行z2完成。类似地,对于“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
答案

您可以使用

DT[, Z := cumsum(z2) + z1[1], by= X]

以上是关于根据data.table中其他列中的计算值计算列中的滚动总和的主要内容,如果未能解决你的问题,请参考以下文章

data.table::fread 不喜欢第一列中的缺失值

检查一个 data.table 列中的所有元素以查看另一个 data.table 列中出现的每个值的最快方法

在其他列中计算具有多个条件的 NaN 单列

如何根据bigquery中另一列中的重复值计算一列

根据第一列中的唯一值计算第二列中值的出现次数

使用Pandas根据两个不同列中的值计算行数