通过R中的多个类型聚合数据帧

时间:2014-09-25 19:54:51

标签: r

我正在使用R中的聚合函数聚合数据框。我可以很容易地得到每个列聚合日期和ID的方法:

aggregate(dataframe, by=list(dataframe$date, dataframe$id), FUN=mean, na.rm=TRUE)

如何将某些列聚合为平均值,将其他列聚合为总和?

2 个答案:

答案 0 :(得分:2)

使用summaryBy包中的doBy功能可以帮助您提供多种功能:

require(doBy)
summaryBy(list("date", "id"), data = dataframe, FUN = c(mean, sum), na.rm=TRUE)

如果您希望特定列具有特定功能,data.table包可能使其最简单。

require(data.table)
dt <- data.table(data.frame)

# set "V1" and "V2" ... "VX" to whichever columns you are interested in
dt.out <- dt[, list(s.v1=sum(V1), m.v2=mean(V2)),
             by=c("date", "id")]

答案 1 :(得分:1)

使用您的代码,一个直接的方法是

res1 <- aggregate(dataframe, by=list(dataframe$date, dataframe$id), FUN=mean, na.rm=TRUE)

res2 <- aggregate(dataframe, by=list(dataframe$date, dataframe$id), FUN=sum, na.rm=TRUE)

然后

res <- cbind(res1,res2)

现在 res 包含均值和和结果,您可以选择所需的任何列。