【问题标题】:Data.table summary statistics from n first observations per group来自每组 n 个第一次观察的 Data.table 汇总统计信息
【发布时间】: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


    【解决方案1】:

    一站式解决方案是

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

    【讨论】:

    • 啊,是的-谢谢。非常短。如果与我提供的笨拙的解决方案不同(没有提到这种特殊情况),如果有一个组只有一个观察值,那么这个单行产生NA。可以修改吗?
    猜你喜欢
    • 2019-03-19
    • 1970-01-01
    • 1970-01-01
    • 2018-01-13
    • 1970-01-01
    • 2021-09-27
    • 1970-01-01
    • 1970-01-01
    • 2015-09-22
    相关资源
    最近更新 更多