7

我试图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.

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

4

1 回答 1

12

尝试将您的密钥设置为“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)]
于 2012-12-17T18:31:18.263 回答