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

使用dplyr按因子聚合:如何分别统计TRUE/FALSE组的求和结果

解决dplyr按因子分组求和未拆分组的问题

示例数据代码

library(dplyr)
group1 <- c(TRUE, FALSE, FALSE, TRUE, TRUE, FALSE, TRUE, TRUE, FALSE, TRUE, FALSE, FALSE, TRUE, TRUE, FALSE, TRUE, TRUE, FALSE)
variable_a <- c(1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3)
variable_b <- c(5, 8, 6, 8, 4, 5, 9, 2, 4, 5, 8, 6, 8, 4, 5, 9, 2, 4)

df <- data.frame(group1, variable_a, variable_b)
df$group1 <- as.factor(group1)

问题场景

尝试用dplyr按group1分组求和:

table_aggregate <- df %>% group_by(group1) %>% 
  summarise(sum_variable_a = sum(variable_a),
            sum_variable_b = sum(variable_b)) 

但结果将所有值聚合为一行,无法分别展示group1中TRUE和FALSE组的求和结果。

解决办法

你的代码逻辑本身是正确的,正常执行后应返回两行分组结果。若出现异常,可参考以下方案排查:

  • 清理环境残留分组:如果之前对df执行过其他分组操作且未取消,会导致分组逻辑混乱,先取消分组再重新执行:
    table_aggregate <- df %>% ungroup() %>% group_by(group1) %>% 
      summarise(sum_variable_a = sum(variable_a),
                sum_variable_b = sum(variable_b)) 
    
  • 明确分组保留规则:在summarise中添加.groups参数,强制保留分组变量:
    table_aggregate <- df %>% group_by(group1) %>% 
      summarise(sum_variable_a = sum(variable_a),
                sum_variable_b = sum(variable_b),
                .groups = "keep")
    
  • 更新dplyr版本:旧版本dplyr可能存在分组逻辑缺陷,更新到最新版本后重试。

预期正确结果

# A tibble: 2 × 3
  group1 sum_variable_a sum_variable_b
  <fct>           <dbl>          <dbl>
1 FALSE              24             46
2 TRUE               21             52

内容的提问来源于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.18 00:03:20