You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用dplyr按多列分组计算均值仅返回单一结果,求问题原因

问题原因与解决方法

你得到单一整体均值的核心原因是函数冲突——如果你的R环境中同时加载了plyr包,summarise会默认调用plyr的版本,而非dplyr的,导致分组逻辑完全失效。此外,原始数据本身并不包含所有6种因子组合,即使分组生效,默认也只会显示有观测的组。

分步解决

  1. 强制使用dplyr的分组汇总函数
    明确指定dplyr::summarise,避免和plyr的函数冲突:

    df %>% 
      group_by(group1, group2) %>%                     
      dplyr::summarise(mean_pop = mean(pop))
    

    或者先卸载plyr再重新加载dplyr:

    detach("package:plyr", unload=TRUE)
    library(dplyr)
    
  2. 显示所有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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 00:13:24