data.table - 汇总数据 - `by` 和 `keyby` 之间的区别?

Dan*_*nka 1 r data.table

我注意到以下两个命令产生非常不同的结果,所以我想知道有什么区别?

TestData <- TestData[, keyby = c("group","date"), 
                             .(totalCount = sum(count))]

TestData <- TestData[, by = c("group","date"), 
                             .(totalCount = sum(count))]
Run Code Online (Sandbox Code Playgroud)

根据备忘单:

dt[, j, by = .(a)] – 按指定列中的值对行进行分组。

dt[, j, keyby = .(a)] – 按指定列中的值对行进行分组和同时排序。

jan*_*cki 8

使用keyby而不是by使结果行按您分组的列排序。否则,当使用by结果的行顺序时,将保留作为输入数据中组的顺序。对数据进行排序可以加快一些进一步的计算。另一方面,用户可能需要原始订单。在大多数情况下keyby会比 略快by