【问题标题】:calculate rolling sum in a column based on calculated values in other columns in data.table根据 data.table 中其他列中的计算值计算列中的滚动总和
【发布时间】:2017-12-26 04:03:28
【问题描述】:

我正在尝试根据另一列的计算值计算一列中的值。

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

【问题讨论】:

  • NB 我认为您的数据应该是 z2 = rep(c(1,2,3), each =3) 以匹配您的演示答案

标签: r dataframe data.table


【解决方案1】:

你可以使用

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-16
    • 2021-12-12
    • 2019-11-11
    • 2019-03-09
    • 1970-01-01
    • 2022-07-06
    • 2019-04-17
    相关资源
    最近更新 更多