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

条件求和代码异常:无法统计男女观测数

问题原因与修正方案

错误根源

你代码里的sum(gender=1)和sum(gender=2)是赋值操作,不是条件判断逻辑。R会把gender=1理解为给gender变量赋值1,然后对这个单个值求和,所以最终得到的男女数量全是固定值,完全不符合统计需求。

正确的条件判断应该用双等号==,用来检查gender是否等于目标值,sum函数会自动统计符合条件的行数。另外建议加上na.rm=TRUE,避免数据中存在NA值时求和出错。

修正后的代码

dat %>% 
  group_by(cohort, grade, sy) %>% 
  distinct(id, keep_all=TRUE) %>%
  summarize(
    n = n(),
    `n female` = sum(gender == 1, na.rm = TRUE),
    `n male` = sum(gender == 2, na.rm = TRUE)
  )

预期输出

基于你提供的测试数据,运行修正后的代码会得到如下结果:

cohortgradesynn femalen male
19"17-18"211
110"18-19"211
111"19-20"110
112"20-21"211
211"20-21"211
212"21-22"110
29"17-18"101
210"18-19"101
211"19-20"101
212"20-21"101

内容的提问来源于stack exchange,提问作者helpneeder

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 05:10:11