分组的data.table摘要,用于多列

时间:2019-04-26 18:10:51

标签: r data.table

dt = data.table(a = rep(x = c(1, 2, 3), 3), y = as.numeric(1:9), z = as.numeric(2:10))

我知道这可以按组汇总一列的值:

dt = data.table(a = rep(x = c(1, 2, 3), 3), y = as.numeric(1:9), z = as.numeric(2:10))

但是,如果我尝试输入多列:

dt[, .(c('y', 'z') = list(mean(y) mean(z)), by = a]

我得到了错误

  

错误:“ dt [,。(c('y','z')=”

中出现意外的'='

我在寻找什么:

## data.table equivalent to
dt %>% group_by(a) %>% summarise(y = mean(y), z = mean(z))
#  a     y     z
#  <dbl> <dbl> <dbl>
#1     1     4     5
#2     2     5     6
#3     3     6     7

1 个答案:

答案 0 :(得分:0)

dt <- dt[, .(y = mean(y), z = mean(z)), by=.(a)]