从数据框架中,是否有一种简单的方法可以同时聚合( sum
, mean
, max
et c)多个变量?
以下是一些示例数据:
library(lubridate)
days = 365*2
date = seq(as.Date("2000-01-01"), length = days, by = "day")
year = year(date)
month = month(date)
x1 = cumsum(rnorm(days, 0.05))
x2 = cumsum(rnorm(days, 0.05))
df1 = data.frame(date, year, month, x1, x2)
我想同时按年份和月份汇总 df2
数据框中的 x1
和 x2
变量 . 以下代码聚合 x1
变量,但是是否也可以同时聚合 x2
变量?
### aggregate variables by year month
df2=aggregate(x1 ~ year+month, data=df1, sum, na.rm=TRUE)
head(df2)
任何建议将不胜感激 .
5 回答
这个
year()
函数来自哪里?您还可以使用
reshape2
包执行此任务:是的,在
formula
中,您可以cbind
要聚合的数值变量:请参阅
?aggregate
,formula
参数和示例 .使用
data.table
包,这个包很快(对较大的数据集很有用)https://github.com/Rdatatable/data.table/wiki
使用plyr包
使用Hmisc包中的summarize()(虽然我的例子中列 Headers 很乱)
使用
dplyr
包,您可以使用summarise_all
,summarise_at
或summarise_if
函数同时聚合多个变量 . 对于示例数据集,您可以按如下方式执行此操作:后两种选择的结果:
注意:
summarise_each
已弃用,支持summarise_all
,summarise_at
和summarise_if
.如my comment above中所述,您还可以使用
reshape2
-package中的recast
函数:这将给你相同的结果 .
迟到了,但最近又找到了获取汇总统计数据的另一种方法 .
library(psych) describe(data)
将输出:每个变量的平均值,最小值,最大值,标准偏差,n,标准误差,峰度,偏度,中位数和范围 .