如何使用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