【问题标题】:Summarize based on two grouping variables in R using data.table使用 data.table 根据 R 中的两个分组变量进行汇总
【发布时间】:2012-12-17 18:06:15
【问题描述】:

我正在尝试在 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,但到目前为止我还没有找到上面的答案。

【问题讨论】:

    标签: r data.table


    【解决方案1】:

    尝试将您的密钥设置为“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)]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-24
      • 1970-01-01
      • 2021-01-03
      • 2018-04-01
      • 2017-01-11
      • 1970-01-01
      相关资源
      最近更新 更多