r - 使用 data.table 基于 R 中的两个分组变量进行汇总

标签 r data.table

我正在尝试使用 data.table在 R 中总结以下数据表:

SiteNo Var1 Var2 Var3 ... Var18 Group
1      0.1 0.3  1         0.3     1
2      0.3 0.1  0.9       0.2     1
etc.

有 668,944 个观测值、43 个站点、3 个组和 19 个变量。我想获得一个函数的结果(例如, mean ),该函数按站点和组汇总每列/变量。所以应该有 43 个站点 x 3 个组 x 汇总统计数据(例如, mean )。我使用了以下代码:
e.dt<-data.table(e)
setkey(e.dt, Group) # set key to group number

# get mean for each column/variable
e.dt.mean<-e.dt[,lapply(.SD,mean), by="SiteNo"]

使用上面的方法,我得到了 43 个站点,但不是我所追求的 3 个组。我可以将原始数据表分成三组,但想知道是否可以使用 data.table 使用两个变量(SiteNo 和 Group)进行汇总。 .

我还在 data.table 上 RTM ,但到目前为止我还没有找到上述问题的答案。

最佳答案

尝试将您的 key 设置为“Group”和“SiteNo”:

来自 ?key 下的示例:

keycols <- c("SiteNo", "Group")
setkeyv(e.dt, keycols)

然后,使用 by作为:
e.dt[, lapply(.SD,mean), by = key(e.dt)]

或者,您可以使用:
e.dt[, lapply(.SD,mean), by = "SiteNo,Group"]

或者
e.dt[, lapply(.SD, mean), by = list(SiteNo, Group)]

关于r - 使用 data.table 基于 R 中的两个分组变量进行汇总,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13919587/

相关文章:

r - 在 data.table 中查找与标题相同的行

r - 使用 Shiny 时出现 413 请求错误

r - 在 R 数据帧的另一列中提取具有最大值的唯一行

r - fread() 从存档中读取文件

r - 在data.table中,使用.SD时在j中取点(.)和 'c'有什么区别?它是如何工作的?

r - 在r中加入多个数据帧

从 data.table groupby 模型中恢复 lm() 结果

r - 使用 qqline() 检查残差正态性时出现 "plot.new"错误

根据分组(不是一对一查找表)将 NA 替换为另一个表中的值

r - 分配给 data.frame 时向量回收不起作用