Как я могу использовать агрегат для вычисления среднего числа строк в наборе данных? - PullRequest
0 голосов
/ 20 марта 2020

У меня есть набор данных, который выглядит примерно так

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 лет) ... Я пытался использовать агрегат с базовым кодом c из учебного пособия, но это не сработало ... Понятно?

1 Ответ

0 голосов
/ 20 марта 2020

Для расчета среднего по году вы можете использовать функции из пакета 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
...