我正在使用R中的聚合函数聚合数据框。我可以很容易地得到每个列聚合日期和ID的方法:
aggregate(dataframe, by=list(dataframe$date, dataframe$id), FUN=mean, na.rm=TRUE)
如何将某些列聚合为平均值,将其他列聚合为总和?
答案 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 包含均值和和结果,您可以选择所需的任何列。