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

R语言按ID分组对A=B=1的行求和并新增列的实现问题

R dplyr 分组统计新增列解决方案

原有代码问题

  • 语法错误:mutate 行末尾的管道符后多了冗余逗号,写成 %>%, 会直接触发语法报错
  • 逻辑错误:
    • 你用 case_when 的分支逻辑仅会在当前行满足 A==1 & B==1 时执行计算,其余行直接赋值为0,无法得到全局分组统计结果
    • 分支内的 sum(A) 仅会对当前筛选出的符合条件行的A值求和,不是统计整个ID分组下符合条件的总行数

正确实现代码

场景1:所有行都显示对应ID分组下A、B均为1的总行数

library(dplyr)
data1 <- data %>% 
  group_by(ID) %>%
  mutate(result = sum(A == 1 & B == 1)) %>%
  ungroup()

原理:A == 1 & B == 1 会返回逻辑值,R中逻辑值TRUE等价于1、FALSE等价于0,直接求和即可得到该分组下符合条件的总行数,整组所有行的result都会统一赋值为这个统计值。

场景2:仅当前行满足A、B均为1时显示分组统计值,其余行显示0(匹配你原有代码的分支逻辑)

library(dplyr)
data1 <- data %>% 
  group_by(ID) %>%
  mutate(result = ifelse(A == 1 & B == 1, sum(A == 1 & B == 1), 0)) %>%
  ungroup()

提示:如果数据集的A、B列存在缺失值,可在sum函数中添加na.rm = TRUE参数,避免统计结果返回NA。

内容的提问来源于stack exchange,提问作者Ruser-lab9

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 12:54:05