【发布时间】:2015-12-28 22:56:31
【问题描述】:
我想使用data.table 仅根据为每个组找到的第一个n 观察结果进行汇总统计。我有一个可以在下面使用的解决方案,但我有一种烦人的感觉,可能会在data.table 中将其写为单行,但我不知道如何。
library(data.table)
DT <- data.table(y=1:10, grp=rep(1:2,5))
这会产生
y grp
1: 1 1
2: 2 2
3: 3 1
4: 4 2
5: 5 1
6: 6 2
7: 7 1
8: 8 2
9: 9 1
10: 10 2
我基本上想根据每个组的前两个观察结果对y 进行汇总统计。以下命令为我提供索引(按组)
DT2 <- DT[, .(idx = 1:.N, y), by=grp]
产生
grp idx y
1: 1 1 1
2: 1 2 3
3: 1 3 5
4: 1 4 7
5: 1 5 9
6: 2 1 2
7: 2 2 4
8: 2 3 6
9: 2 4 8
10: 2 5 10
然后我可以再次使用data.table 根据相关选择创建摘要。
DT2[idx<3, .(my = mean(y)), by=grp]
得到
grp my
1: 1 2
2: 2 3
是否可以将其编写为对data.table 的单个调用?
【问题讨论】:
标签: r data.table