将函数与 group-by 一起应用于 data.table 的所有列

CCG*_*CCG 6 group-by r data.table

我有一个data.table有大量行的。我想按一个特定列对数据表进行分组,并且想对所有其他列应用相同的聚合函数。这样做的适当方法是什么?

这是一些示例代码,用于设置与我所拥有的数据表类似的数据表。

my.table.tmp <- matrix(runif(5000*95), nrow=5000)
my.table <- data.table(my.table.tmp)
my.table[, gbc:=rep(c('A', 'B', 'C', 'D', 'E'), 1000)]
Run Code Online (Sandbox Code Playgroud)

我想按因子列对表进行分组gbc,并且我希望所有剩余的 95 列应该通过函数聚合,比方说mean

我看到

my.table[, lapply(.SD, mean), by=gbc]
Run Code Online (Sandbox Code Playgroud)

给了我一张尺寸正确的桌子,但我不确定这是否正确。如果它做的是正确的事情,有人可以帮助我分解这里发生的事情吗?

the*_*ail 2

您的描述听起来正确.SD只是每个by=组的所有子集列,并且由于 adata.frame/data.table只是作为list列粘在一起,lapply因此将循环应用每个列myfunction