我正在使用一个数据表,其中包含数据组和每个位置(从-1000 到 +1000)和每个位置的计数。一个小例子是这样的:
dt.ex <- data.table(newID=rep(c("A","B"), each = 6), pos=rep(c(-2:3), 2), count= sample(c(1:100), 12))
newID pos count
1: A -2 29
2: A -1 32
3: A 0 33
4: A 1 45
5: A 2 51
6: A 3 26
7: B -2 22
8: B -1 79
9: B 0 2
10: B 1 48
11: B 2 87
12: B 3 38
我想要做的是计算每组newID的每n行之间的平均值(或总和)。即拆分为n行并聚合结果。假设 n=3 并求和,这将输出:
newID pos count
A -2 94
A 1 122
B -2 103
B 1 173
老实说,我不知道如何在不使用某种循环的情况下开始 - 对于 67094000 x 3 表来说是不可取的。如果我只想计算每个 newID,这样的事情就可以解决问题,但我还没有看到接近回答我的问题的解决方案。Plyr 解决方案也很受欢迎,尽管我觉得这可能太慢了。