如何使用aggregate计算数据集中多行的平均值?

如何使用aggregate计算数据集中多行的平均值?,r,aggregate,R,Aggregate,我有一个类似这样的数据集 yr<-c(2009, 2008, 2008, 2008, 2008, 2007, 2007, 2007, 2006, 2006, 2006, 2005, 2005, 2004, 2004, 2004, 2003) Na<-runif(17, 20.0, 3.0) NH4<- runif(17, 0.0, 1.0) Ca<- runif(17, 1.0, 15.0) dd<- data.frame(yr, Na, NH4, Ca) y

我有一个类似这样的数据集

yr<-c(2009, 2008, 2008, 2008, 2008, 2007, 2007, 2007, 2006, 2006, 2006, 2005, 2005, 2004, 2004, 2004, 2003)

Na<-runif(17, 20.0, 3.0)
NH4<- runif(17, 0.0, 1.0)
Ca<- runif(17, 1.0, 15.0)

dd<- data.frame(yr, Na, NH4, Ca)

yr要按年份计算平均值,可以使用
dplyr
软件包中的函数:

dd %>% 
    group_by(yr) %>% 
    summarise_at(vars(-group_cols()), mean)

# A tibble: 7 x 4
     yr    Na   NH4    Ca
  <dbl> <dbl> <dbl> <dbl>
1  2003 11.6  0.247  3.80
2  2004 11.9  0.323  8.69
3  2005  5.21 0.512 12.9 
4  2006 13.1  0.312  5.68
5  2007 14.8  0.645  7.83
6  2008 11.1  0.479  7.72
7  2009  4.66 0.444 12.3 

这个伤口的问题,我想。。。真正的数据集可以追溯到1200年。。。是否有另一种方法按5年一组进行汇总?为什么不直接使用
cut(yer,breaks=seq(from=1200,to=2020,by=5)
dd %>% 
    mutate(yr2 = cut(yr, breaks = c(2000, 2005, 2010))) %>% 
    group_by(yr2) %>% 
    summarise_at(vars(-group_cols(), -yr), mean)

# A tibble: 2 x 4
  yr2            Na   NH4    Ca
  <fct>       <dbl> <dbl> <dbl>
1 (2000,2005]  9.60 0.373  9.27
2 (2005,2010] 12.0  0.476  7.61