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

Pro*_*091 7 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.
Run Code Online (Sandbox Code Playgroud)

共有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"]
Run Code Online (Sandbox Code Playgroud)

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

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

A5C*_*2T1 11

尝试将您的密钥设置为"Group"和"SiteNo":

从以下示例?key:

keycols <- c("SiteNo", "Group")
setkeyv(e.dt, keycols)
Run Code Online (Sandbox Code Playgroud)

然后,by用作:

e.dt[, lapply(.SD,mean), by = key(e.dt)]
Run Code Online (Sandbox Code Playgroud)

或者,您可以使用:

e.dt[, lapply(.SD,mean), by = "SiteNo,Group"]
Run Code Online (Sandbox Code Playgroud)

要么

e.dt[, lapply(.SD, mean), by = list(SiteNo, Group)]
Run Code Online (Sandbox Code Playgroud)