使用dplyr按多列分组计算均值仅返回单一结果,求问题原因
问题原因与解决方法
你得到单一整体均值的核心原因是函数冲突——如果你的R环境中同时加载了plyr包,summarise会默认调用plyr的版本,而非dplyr的,导致分组逻辑完全失效。此外,原始数据本身并不包含所有6种因子组合,即使分组生效,默认也只会显示有观测的组。
分步解决
强制使用dplyr的分组汇总函数
明确指定dplyr::summarise,避免和plyr的函数冲突:df %>% group_by(group1, group2) %>% dplyr::summarise(mean_pop = mean(pop))或者先卸载
plyr再重新加载dplyr:detach("package:plyr", unload=TRUE) library(dplyr)显示所有6种因子组合
原始数据中不存在group1=TRUE+group2=3、group1=FALSE+group2=1这两组观测,要保留所有因子组合(无观测的组均值显示为NA),需在group_by中添加.drop=FALSE参数:df %>% group_by(group1, group2, .drop = FALSE) %>% dplyr::summarise(mean_pop = mean(pop, na.rm = TRUE))如果需要把
NA替换为0或其他值,可追加mutate操作:df %>% group_by(group1, group2, .drop = FALSE) %>% dplyr::summarise(mean_pop = mean(pop, na.rm = TRUE)) %>% mutate(mean_pop = replace_na(mean_pop, 0))
内容的提问来源于stack exchange,提问作者KT_1
相关产品推荐
相关产品推荐

