dplyr中summarise配合group_by对因子列分组失效无法正确汇总的问题
dplyr group_by结合summarise分组失效解决方案
问题原因
该问题的核心诱因是环境中存在同名函数冲突:同时加载了plyr和dplyr两个包时,plyr::summarise()会覆盖dplyr::summarise(),而plyr的汇总函数不识别dplyr的group_by()生成的分组标记,只会将整个数据集作为单一组计算聚合结果。
解决方案
你可以任选以下任意一种方法解决问题:
- 调用函数时明确指定dplyr包名,避免同名函数冲突
data %>% dplyr::group_by(brand) %>% dplyr::summarise(SUM = sum(variable))
运行后即可得到预期的分组汇总结果:
# A tibble: 2 × 2 brand SUM <fct> <dbl> 1 BMW 132 2 Mercedes 63
- 调整包加载顺序,加载
plyr后再加载dplyr,让dplyr的同名函数覆盖plyr的函数
library(plyr) library(dplyr)
- 不需要使用plyr功能时,直接从当前环境卸载plyr包
detach("package:plyr", unload = TRUE)
问题排查
如果执行上述操作后问题仍然存在,可以运行find("summarise")查看当前调用的summarise函数所属的包,正常情况下返回结果的第一条应该是"package:dplyr"。
内容的提问来源于stack exchange,提问作者Valen78
相关产品推荐
相关产品推荐

