9
我知道這可以通過其他軟件包來實現,但我試圖在data.table
中執行它(因爲它似乎是分組中速度最快的)。如何獲取data.table分組中的當前組的長度?
library(data.table)
dt = data.table(a=c(1,2,2,3))
dt[,length(a),by=a]
導致
a V1
1: 1 1
2: 2 1
3: 3 1
而
df = data.frame(a=c(1,2,2,3))
ddply(df,.(a),summarise,V1=length(a))
產生
a V1
1 1 1
2 2 2
3 3 1
這是比較明智的結果。只是想知道爲什麼data.table
沒有給出相同的結果,以及如何實現。
1 @jamborta另請參見[FAQ 2.10](HTTP://datatable.r-forge.r-project。 org/datatable-faq.pdf)。其原因是通過可能長的矢量(時間和空間)來避免重複相同的組值。在具有較長向量的操作系統中,無論如何,如果需要,R將循環長度爲1的向量。所以'.N'是要走的路。 –
謝謝你們,這非常有用。 – jamborta