我正在尝试使用 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/