Data.tableを介して単純な集計/カウントを行う方法を探しています。
種ごとに50の観測値があるアイリスデータを考えます。種ごとの観測値をカウントするには、種以外の列(たとえば、 "Sepal.Length")で要約する必要があります。
library(data.table)
dt = as.data.table(iris)
dt[,length(Sepal.Length), Species]
一見するとSepal.Lengthで何かをしているように見えるので、本当に混乱するのは、本当に重要なのはSpeciesだけだからです。
これは私が言いたいことですが、有効な出力が得られません。
dt[,length(Species), Species]
> dt[,length(Sepal.Length), Species]
Species V1
1: setosa 50
2: versicolor 50
3: virginica 50
> dt[,length(Species), Species]
Species V1
1: setosa 1
2: versicolor 1
3: virginica 1
data.table
には、j
式内で使用できるいくつかの記号があります。特に
.N
は、各グループの行数を示します。見る ?data.table
の詳細の下でby
Advanced:
by
またはiでグループ化する場合、シンボル.SD、.BY、および.Nをj式で使用できます。....
.Nは長さ1の整数で、グループ内の行数を含みます。
例えば:
dt[, .N ,by = Species]
Species N
1: setosa 50
2: versicolor 50
3: virginica 50