【发布时间】:2015-10-28 12:55:15
【问题描述】:
我有一个如下所示的 data.table:
DT <- data.table(A=1:20, B=1:20*10, C=1:20*100)
DT
A B C
1: 1 10 100
2: 2 20 200
3: 3 30 300
4: 4 40 400
5: 5 50 500
...
20: 20 200 2000
我希望能够计算一个新列“D”,它的第一个值作为 B 列中前 20 行的平均值作为第一个值,然后我想使用 D 列的第一行帮助计算 D 的下一行值。
假设B列前20行的平均值为105。D列下一行的公式是:DT$D[1]+DT$C[2] 我取 D 的前一行值并添加 C 的行值。 第三行将如下所示:DT$D[2]+DT$C[3]
A B C D
1: 1 10 100 105
2: 2 20 200 305
3: 3 30 300 605
4: 4 40 400 1005
5: 5 50 500 1505
...
20: 20 200 2000 21005
对此有什么想法吗?
我认为 shift 对延迟有很大帮助,但不知道如何摆脱它在一开始产生的 NA?
【问题讨论】:
-
试试
library(RcppRoll); DT[, D:= cumsum(roll_mean(B, 20))]示例数据没有20行,所以这里没有测试。 -
你是只取前 20 行的平均值而不是扩展它吗?
-
我不认为他们在扩大平均值。求均值一次,在后面添加 C 列
-
@PierreLafortune 没有可重现的例子,我不知道。
-
我已将示例更新为包含 20 行,希望对您有所帮助
标签: r data.table lag shift