每组第一次观察的数据表摘要统计数据

时间:2015-12-28 22:56:32

标签: r data.table

我想使用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的单个调用?

1 个答案:

答案 0 :(得分:3)

一个呼叫解决方案是

DT[, .(my = mean(y[1:2])), by = grp]