data.table分组我试图跨越ň因素估计在data.table
一些参数。虽然我熟悉使用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]
将给出每一组的平均值。但是,我想计算以前的和组的平均值。
我试过使用M[, zoo::rollapply(Variable, n, mean), by = Group]
,但是,因为这些组使用固定的不同尺寸n将不起作用。
想要什么功能类似于df[, mean(Variable), by = "This Group and previous n Groups]
。
我想实现(为ň = 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'使用可变窗宽,你应该检查这个问题:http://stackoverflow.com/questions/21368245/adaptive-rolling-window-function-top-performance-in-r请记住,目前最高的upvoted答案不回答这个问题。 – jangorecki
此链接有帮助。 –