我使用R.聚合函数,我可以得到汇总日期和ID很容易像这样每列的方式聚集一个数据帧多于一个类型:合计数据帧由R中
aggregate(dataframe, by=list(dataframe$date, dataframe$id), FUN=mean, na.rm=TRUE)
哪有我汇总了一些列作为手段和其他作为和?
我使用R.聚合函数,我可以得到汇总日期和ID很容易像这样每列的方式聚集一个数据帧多于一个类型:合计数据帧由R中
aggregate(dataframe, by=list(dataframe$date, dataframe$id), FUN=mean, na.rm=TRUE)
哪有我汇总了一些列作为手段和其他作为和?
使用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")]
这看起来很有趣...但是我们如何指定哪个列获取哪个函数? – Cybernetic 2014-09-25 20:10:32
@Cybernetic,你可以使用'data.table'包来做到这一点。 – cdeterman 2014-09-25 20:20:04
这工作完美。谢谢。 – Cybernetic 2014-09-25 20:44:54
使用你的代码,一个直接的方法是
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)
现在资源包含均值和结果,你可以选择wha你需要的专栏。
使用两个不同的调用。 '聚合'将相同的功能应用于每个非组列。或者使用'split'和'lapply'自定义函数。 SO上必须有大量的工作实例,但没有使用这种策略。 – 2014-09-25 20:15:53