R 分组依据()是';正如我所预料的那样

R 分组依据()是';正如我所预料的那样,r,dplyr,tidyverse,R,Dplyr,Tidyverse,我尝试使用bomrang软件包和tidyverse来总结一些降雨数据。我尝试使用dplyr::group_by(year)然后使用summary和mean来计算年平均降雨量。但我没有得到不同的年平均值,而是在整个数据框架中得到相同的平均值 #加载库 图书馆(博朗) 图书馆(tidyverse) #获取数据 珀斯% 选择(站号、年份:日、降雨量)%>% 组别(年份)%>% 总结(年平均值=平均值(降雨量,na.rm=真实值)) 我希望26年数据中的每一年都有一个年平均值,因此,例如,1993年年

我尝试使用
bomrang
软件包和
tidyverse来总结一些降雨数据。
我尝试使用
dplyr::group_by(year)
然后使用
summary
mean
来计算年平均降雨量。但我没有得到不同的年平均值,而是在整个数据框架中得到相同的平均值

#加载库
图书馆(博朗)
图书馆(tidyverse)
#获取数据
珀斯%
选择(站号、年份:日、降雨量)%>%
组别(年份)%>%
总结(年平均值=平均值(降雨量,na.rm=真实值))
我希望26年数据中的每一年都有一个
年平均值,因此,例如,1993年
年平均值应为2.032013年,1994年应为2.026849等


相反,我只得到一个值2.002883。我曾尝试每年使用
突变
作为.factor
,看看这是否改变了结果,但没有改变。

因此,看看
分组是否有预期效果总是有用的。在你的管道里,你可以走了

perth %>% 
    select(station_number, year:day, rainfall) %>% 
    dplyr::group_by(year) %>% 
    class()
结果是

"bomrang_tbl" "data.frame"
所以它不是一个分组的TIBLE,这通常是通过
dplyr::group_by
实现的。并不是说调用的
groupby
不是
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))

你在正确的轨道上。有时包裹会发生冲突,奇怪的事情也会发生。始终检查分组状态,如有必要,请使用
取消分组

您好,您能在您的问题中发布
dput(head(perth))
的结果吗。这样,我们现在可以看到您的数据是什么样子的。它看起来像一个带有“
bomrang\u tbl
”类的
data.table
。无论如何,
perth%%>%as.data.frame()%%>%…
对我来说很好。有趣的是,小插曲特别提到“一些返回的对象被归类为bomrang_tbl,它允许分派dplyr方法,例如mutate、filter、select、arrange、slice、rename和group_by,同时保留标题信息”因此,我们的意图是它会起作用。您可能希望将其记录为问题,以供参考。我今天使用
bomrang
时发现了一个单独但相关的问题,因此我在他们的GitHub上记录了两个问题