我将首先描述我正在执行的任务。我必须重复计算分组总和,通常为 5 到 10 次。我正在执行分组总和的列中的值随着每次迭代而变化,但我分组所依据的列则不会。下面是一个示例表,其中 w、x 和 y 一起构成分组,z 是将其值求和的列。
DT <- data.table(w = sample(1:10, size = 1000000, replace = TRUE),
x = sample(1:100, size = 1000000, replace = TRUE),
y = sample(1:1000, size = 1000000, replace = TRUE),
z = runif(n = 1000000, min = 0, max = 1))
setkey(DT, w, x, y)
Run Code Online (Sandbox Code Playgroud)
我认为我最初的解决方案是最明显的:
DT[, Group_Total := sum(z), keyby = list(w, x, y)]
microbenchmark(DT[, Group_Total := sum(z), keyby = list(w, x, y)])
Unit: milliseconds
min lq mean median uq …Run Code Online (Sandbox Code Playgroud)