1
我想使用data.table
僅基於爲每個組找到的第一個n
觀察值進行彙總統計。我有一個解決方案,可以在下面工作,但我有一個嘮叨的感覺,這可能被寫成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
彙總統計。下面的命令給了我這得到
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 <- DT[, .(idx = 1:.N, y), by=grp]
。
DT2[idx<3, .(my = mean(y)), by=grp]
得到
grp my
1: 1 2
2: 2 3
是否有可能寫這爲data.table
單一的電話嗎?
是啊 - 謝謝你。奇妙的短。如果只有一個單獨的觀察結果,而不是我提供的笨拙解決方案(沒有提到這種特殊情況),那麼這個一行就會產生「NA」。這可以修改嗎? – ekstroem