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

使用dplyr分组条件过滤:筛选男女数量均不少于5人的职业

R语言实现过滤两性人数均达标的职业数据

问题原因

你当前的代码同时按professions和sex两个字段分组,统计的是单个职业下单个性别对应的人数,过滤条件也仅校验了单性别的人数阈值,只会保留满足单性别≥5的分组,无法实现「同一职业下两个性别都满足人数要求」的校验逻辑。

修正方案

方案1:单链式操作直接过滤

library(dplyr)

df %>%
  # 先按职业维度分组
  group_by(professions) %>%
  # 统计当前职业下的女性、男性人数,na.rm = TRUE可跳过空值避免统计错误
  mutate(
    female_cnt = sum(sex == "女性", na.rm = TRUE),
    male_cnt = sum(sex == "男性", na.rm = TRUE)
  ) %>%
  # 仅保留两性人数都≥5的职业的所有记录
  filter(female_cnt >= 5 & male_cnt >= 5) %>%
  # 可选:如果需要输出各职业分性别人数统计,取消注释下行
  # group_by(professions, sex) %>% summarize(count = n(), .groups = "drop")

提示:如果你的sex字段存储的是英文标识(如F/M),将条件判断中的取值替换为实际字段值即可。

方案2:先筛选合法职业再关联原数据

如果数据量较大,该方案可读性和运行效率更高:

# 第一步:统计各职业分性别人数,筛选出两性人数都≥5的职业列表
valid_professions <- df %>%
  count(professions, sex) %>%
  group_by(professions) %>%
  # 要求该职业下所有性别分组的人数都≥5
  filter(all(n >= 5)) %>%
  pull(professions) %>%
  unique()

# 第二步:从原数据中过滤出合法职业的所有记录
df_filtered <- df %>%
  filter(professions %in% valid_professions)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 05:18:00