根据其他一些列聚合多个列

时间:2015-09-16 09:48:02

标签: r aggregate

在data.frame中有数据,我想聚合一些列(使用任何一般函数)由其他人进行分组,保留其余列(或者甚至省略它们)。时尚是回忆group by中的SQL函数。举个例子,让我们假设我们有

df <- data.frame(a=rnorm(4), b=rnorm(4), c=c("A", "B", "C", "A"))

我希望将a列中的值相加(比方说)并平均(比方说)列b中的值,并按列c中的符号进行分组。我知道有可能使用applycbind或类似物来实现,指定你想要使用的功能,但我想知道是否有更智能(一行)的方式(特别是使用aggregate函数)这样做。

2 个答案:

答案 0 :(得分:2)

很抱歉,但我并不了解如何处理多个专栏会使事情变得复杂。

library(data.table)
dt <- data.table(df)
dt[,.(sum_a = sum(a),mean_b= mean(b)),by = c]

答案 1 :(得分:1)

像这样?

    mapply(Vectorize(function(x, y) aggregate(
      df[, x], by=list(df[, 3]), FUN=y), SIMPLIFY = F), 
      1:2, c('sum', 'mean'))