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

如何将多个二元变量合并为分类变量(适配ggplot绘图需求)

解决方案

1. 构建数据框

先把所有二元变量整合到一个数据框里,示例代码如下:

# 创建包含所有任务变量的数据框
task_data <- data.frame(
  Personal_Help = c(1,1,2,1,2,1),
  PR = c(2,1,1,2,1,2),
  Fundraising = c(1,2,1,2,2,1)
  # 在这里补充剩余7个任务变量
)

2. 转换为长格式并筛选有效记录

用tidyr和dplyr包把宽格式数据转成适合统计的长格式,同时只保留取值为1(代表“是”)的记录:

library(tidyr)
library(dplyr)

# 转长格式+筛选有效响应
long_data <- task_data %>%
  pivot_longer(cols = everything(), 
               names_to = "Job_Task",  # 分类变量名,直接用原任务名称
               values_to = "Is_Included") %>%
  filter(Is_Included == 1)

# 如果一定要用数字编码作为分类水平,可加以下步骤
long_data <- long_data %>%
  mutate(Job_Task_Code = case_when(
    Job_Task == "Personal_Help" ~ 1,
    Job_Task == "PR" ~ 2,
    Job_Task == "Fundraising" ~ 3,
    # 补充剩余任务的编码对应关系
    TRUE ~ NA_integer_
  ))

3. 用ggplot绘制统计图表

直接用整理好的长格式数据绘图,统计每个任务的受访者数量:

library(ggplot2)

ggplot(long_data, aes(x = Job_Task)) +
  geom_bar(fill = "#4682B4") +
  labs(title = "各工作任务的受访者分布",
       x = "工作任务类型",
       y = "受访者人数") +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))  # 旋转x轴标签避免重叠

核心优势

  • 无需逐个写条件判断,自动批量处理所有任务变量
  • 长格式是ggplot的标准输入格式,后续调整图表更灵活
  • 保留原任务名称作为分类标签,图表可读性远高于数字编码

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 09:57:19