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

R语言:双分类变量可视化及特定条件数据筛选问题

解决方案

1. 错误原因分析

你之前的筛选代码存在两个核心问题:

  • 用&连接dplyr管道是错误操作,&是逻辑运算符,无法实现数据流转;
  • 第一次count(jobtitle)后,数据集仅保留jobtitle和计数列n,原数据的gender_preferences列已丢失,因此后续调用count(gender_preferences)会触发“变量未找到”的报错。

2. 正确处理流程

要实现“仅保留同时具备至少两类性别偏好观测数据的职业”并绘制平均月薪的分组柱状图,需按以下步骤操作:

步骤1:加载依赖包

library(dplyr)
library(ggplot2)

步骤2:数据清洗与汇总

先过滤掉工资缺失的样本,再按职业和性别偏好分组计算平均月薪:

# 计算每个职业-性别偏好组合的平均月薪,过滤工资缺失值
salary_summary <- job_posts %>%
  filter(!is.na(monthly_income)) %>%
  group_by(jobtitle, gender_preferences) %>%
  summarize(avg_monthly_income = mean(monthly_income), .groups = "drop")

步骤3:筛选符合条件的职业

找出那些至少包含2种不同性别偏好数据的职业:

# 获取满足条件的职业列表
valid_jobs <- salary_summary %>%
  group_by(jobtitle) %>%
  filter(n_distinct(gender_preferences) >= 2) %>%
  pull(jobtitle) %>%
  unique()

# 筛选出仅包含符合条件职业的数据集
final_data <- salary_summary %>%
  filter(jobtitle %in% valid_jobs)

步骤4:绘制分组柱状图

ggplot(final_data, aes(x = jobtitle, y = avg_monthly_income, fill = gender_preferences)) +
  geom_bar(position = "dodge", stat = "identity") +
  # 旋转x轴标签避免重叠
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

补充说明

  • 你最初的ggplot代码未计算平均月薪,直接使用原始观测的工资值,stat="identity"会将所有样本的工资叠加显示,而非展示平均值,因此必须先通过group_by()和summarize()完成汇总。
  • 基于你提供的示例数据,由于每个职业仅对应1种性别偏好(除工资缺失的样本),最终筛选后的final_data会是空集,需确保你的完整数据中存在同时具备多类性别偏好的职业。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 01:02:37