通過 data.table 中的執行來識別和分組
data.table 包提供了一種按資料執行分組的便捷方法。請考慮以下示例資料:
library(data.table)
(DT <- data.table(x = c(1, 1, 2, 2, 2, 1), y = 1:6))
# x y
# 1: 1 1
# 2: 1 2
# 3: 2 3
# 4: 2 4
# 5: 2 5
# 6: 1 6
變數 x
有三個執行:長度為 2 且值為 1 的執行,長度為 3 且值為 2 的執行,以及長度為 1 且值為 1 的執行。我們可能希望計算每個變數 y
的平均值。變數 x 的執行(這些平均值是 1.5,4 和 6)。
data.table rleid
函式提供了一個 id,表示向量的每個元素的執行 id:
rleid(DT$x)
# [1] 1 1 2 2 2 3
然後,可以輕鬆地對此執行 ID 進行分組並彙總 y
資料:
DT[,mean(y),by=.(x, rleid(x))]
# x rleid V1
# 1: 1 1 1.5
# 2: 2 2 4.0
# 3: 1 3 6.0