Group_by()没有按我期望的那样分组

时间:2019-11-11 13:24:42

标签: r dplyr tidyverse

我正在尝试使用bomrang包来总结一些降雨数据,并且我尝试过使用tidyverse.然后使用dplyr::group_by(year)summarise来总结一些降雨数据计算年平均降雨量。但是,我没有获得不同的年度平均值,而是在整个数据框架中获得了相同的平均值。

mean

我希望数据的26年中的每一年都有一个# load the libraries library(bomrang) library(tidyverse) # get the data perth <- get_historical(009225, "rain") # group by year and calculate average rainfall per year perth %>% select(station_number, year:day, rainfall) %>% group_by(year) %>% summarise(yearly_avg = mean(rainfall, na.rm = TRUE)) 值,例如1993 yearly_avg应该是2.032013,1994应该是2.026849,等等。

相反,我只得到一个值2.002883。我曾尝试在一年中使用yearly_avgmutate来查看结果是否有所改变,但并没有改变。

1 个答案:

答案 0 :(得分:0)

因此,查看perth %>% select(station_number, year:day, rainfall) %>% dplyr::group_by(year) %>% class() 是否具有预期的效果总是有用的。在管道中,您可以

"bomrang_tbl" "data.frame"

结果是

dplyr::group_by

所以它不是分组的小标题,通常是通过group_by实现的。并不是说调用的dplyr不是bomrang函数。因此,我对这个tidyverse软件包(澳大利亚政府气象局)不太了解,但似乎创建了自己的类,然后该类覆盖了perth %>% select(station_number, year:day, rainfall) %>% as_tibble() %>% group_by(year) %>% class() 分组。

所以你踢那堂课:

"grouped_df" "tbl_df"     "tbl"        "data.frame"

然后您获得

perth %>% 
  select(station_number, year:day, rainfall) %>% 
  as_tibble() %>%
  group_by(year) %>%
  summarise(yearly_avg = mean(rainfall, na.rm = TRUE))

因此最终,以下各项将得出逐年平均值:

ungroup

您在正确的轨道上。有时,程序包发生冲突并发生奇怪的事情。始终检查分组状态,必要时使用{{1}}。