簡體   English   中英

如何使用聚合計算數據集多行的平均值?

[英]How can I use aggregate to calculate the average of a number of rows of a dataset?

我有一個看起來像這樣的數據集

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)

實際數據集的平均差異是 3500 行長,所以手工做這件事有點問題。 我需要創建一個年平均值(平均每 5 年和 10 年)的新數據集......我嘗試使用聚合與教程中的基本代碼,但它沒有用......知道嗎?

dplyr年計算平均值,您可以使用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 

或者對於年的間隔,嘗試cut功能:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM