【发布时间】:2015-08-09 09:26:55
【问题描述】:
我正在尝试估计 data.table 中跨 n 个因素的一些参数。虽然我熟悉使用 by 功能来执行一个操作;对多个顺序因素执行此操作会导致一些问题。
以简化集为例
df <- data.table(Group = c(rep("A", 2), rep("B", 3), rep("C", 2), rep("D", 4), "E", rep("F", 4)), Variable = round(rnorm(16), 2))
Group Variable
1: A 0.13
2: A 0.26
3: B -1.36
4: B -0.78
5: B -0.92
6: C 0.00
7: C -2.49
8: D -1.85
9: D 0.37
10: D -0.57
11: D 1.42
12: E -0.72
13: F -1.04
14: F 1.86
15: F 0.49
16: F 1.61
使用df[, mean(Variable), by = Group] 将给出每个组的平均值。但是,我想计算前 n 个组的平均值。
但是,我尝试使用 M[, zoo::rollapply(Variable, n, mean), by = Group],因为使用固定 n 的组大小不同。
想要类似于df[, mean(Variable), by = "This Group and previous n Groups] 的功能。
我试图实现的输出(对于 n = 3 的情况)看起来像
Group Variable
1: A NA
2: A NA
3: B NA
4: B NA
5: B NA
6: C 0.13
7: C 0.13
8: D -1.36
9: D -1.36
10: D -1.36
11: D -1.36
12: E 0
13: F -1.85
14: F -1.85
15: F -1.85
16: F -1.85
任何帮助将不胜感激。
【问题讨论】:
-
如果你正在寻找使用可变窗口宽度的
rollapply,你应该检查这个问题:stackoverflow.com/questions/21368245/… 请记住,目前最高投票的答案不能回答问题。 -
这个链接很有帮助。
标签: r data.table