我试图在R中使用data.table
来总结以下数据表:
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,但到目前为止我还没有找到上述答案。
答案 0 :(得分:11)
尝试将您的密钥设置为“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)]