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

如何计算多选问卷中选某选项的受访者同时选其他选项的比例?

解决方案:基于Tidyverse的多选问卷共选比例计算与热图绘制

以下是针对写作发表障碍问卷数据的完整分析流程,全程使用tidyverse工具链实现:

1. 数据预处理(长格式转二元宽格式)

假设你的原始数据是长格式(每个受访者的每个选中障碍占一行),首先需要将其转换为宽格式的二元矩阵(行=受访者,列=障碍,1=选中,0=未选):

library(tidyverse)

# 转换为宽格式二元矩阵
df_wide <- data %>%
  mutate(selection = 1) %>%
  pivot_wider(
    names_from = barrier, 
    values_from = selection, 
    values_fill = 0
  ) %>%
  select(-Response_ID) # 移除ID列,仅保留障碍相关列

如果你的原始数据已经是宽格式(每列对应一个障碍,值为0/1),可直接跳过此步骤。

2. 计算共选比例矩阵

我们需要计算:选择障碍A的受访者中,同时选择障碍B的比例(双向比例不同,符合需求):

# 计算每个障碍的总选择人数
total_by_barrier <- colSums(df_wide)

# 计算两两共选人数并转换为比例
cooccur_df <- t(crossprod(df_wide)) %>% # 转置后行=基准障碍A,列=对比障碍B,值=共选人数
  as_tibble(rownames = "base_barrier") %>%
  pivot_longer(
    cols = -base_barrier, 
    names_to = "cooccur_barrier", 
    values_to = "cooccur_count"
  ) %>%
  left_join(
    enframe(total_by_barrier, name = "base_barrier", value = "total_base"),
    by = "base_barrier"
  ) %>%
  filter(total_base > 0) %>% # 排除无受访者选择的障碍(避免除以0)
  mutate(cooccur_prop = cooccur_count / total_base) %>% # 计算共选比例
  select(base_barrier, cooccur_barrier, cooccur_prop)

3. 绘制热图(ggplot2 geom_tile)

将计算结果转换为可视化格式,用热图展示共选比例:

ggplot(cooccur_df, aes(x = cooccur_barrier, y = base_barrier, fill = cooccur_prop)) +
  geom_tile(color = "white") + # 白色边框区分色块
  geom_text(
    aes(label = scales::percent(cooccur_prop, accuracy = 1)),
    size = 3, color = "white"
  ) + # 添加百分比标签,增强可读性
  scale_fill_viridis_c(
    option = "mako", 
    labels = scales::percent_format(),
    limits = c(0, 1)
  ) + # 使用渐变色系,用百分比标注色阶
  labs(
    x = "同时选择的障碍",
    y = "基准障碍",
    fill = "共选比例"
  ) +
  theme_minimal() +
  theme(
    axis.text.x = element_text(angle = 45, hjust = 1),
    panel.grid = element_blank() # 移除网格线,突出色块
  )

关键说明

  • crossprod(df_wide):快速计算两两障碍的共选人数矩阵,比循环更高效
  • 转置操作t():确保行是基准障碍,列是对比障碍,对应"选A的人中选B的比例"的需求
  • 可视化优化:旋转横轴标签、添加白色边框和百分比标签,避免信息重叠,提升可读性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 04:10:08