按組計算行數
# example data
DT = data.table(iris)
DT[, Bin := cut(Sepal.Length, c(4,6,8))]
使用 .N
j
中的 .N
儲存子集中的行數。在探索資料時,.N
很方便……
-
計算組中的行數,
DT[Species == "setosa", .N] # 50
-
或計算所有組中的行數,
DT[, .N, by=.(Species, Bin)] # Species Bin N # 1: setosa (4,6] 50 # 2: versicolor (6,8] 20 # 3: versicolor (4,6] 30 # 4: virginica (6,8] 41 # 5: virginica (4,6] 9
-
或查詢具有特定行數的組。
DT[, .N, by=.(Species, Bin)][ N < 25 ] # Species Bin N # 1: versicolor (6,8] 20 # 2: virginica (4,6] 9
處理缺少的組
但是,我們缺少計數為零的組。如果它們重要,我們可以使用基地的 table
:
DT[, data.table(table(Species, Bin))][ N < 25 ]
# Species Bin N
# 1: virginica (4,6] 9
# 2: setosa (6,8] 0
# 3: versicolor (6,8] 20
或者,我們可以加入所有團體:
DT[CJ(Species=Species, Bin=Bin, unique=TRUE), on=c("Species","Bin"), .N, by=.EACHI][N < 25]
# Species Bin N
# 1: setosa (6,8] 0
# 2: versicolor (6,8] 20
# 3: virginica (4,6] 9
關於 .N
的說明:
- 此示例在
j
中使用.N
,其中它指的是子集的大小。 - 在
i
中,它指的是總行數。