我想使用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
的单个调用?
答案 0 :(得分:3)
一个呼叫解决方案是
DT[, .(my = mean(y[1:2])), by = grp]