如何在R中将Qualtrics问卷的逗号分隔多选列转为二元分析变量
批量将Qualtrics多选问卷数据转换为二元变量格式(R实现)
针对你需要把15列逗号分隔的多选问卷数据批量转成yes/no二元列的需求,用tidyverse工具链可以高效完成,不用逐列手动处理,具体步骤如下:
准备工作
先加载所需包:
library(tidyverse)
假设你的原始数据框是data,其中gender是需要保留的非处理列,social、emotional、cognitive、family等15列是需要处理的多选列。
完整处理代码
# 1. 将多选列转成长格式,拆分逗号分隔的选项 long_data <- data %>% pivot_longer(cols = -gender, # 排除不需要处理的列 names_to = "question", values_to = "options") %>% separate_rows(options, sep = ",") %>% # 把每个选项拆成单独行 mutate(options = str_trim(options), # 清理选项前后的空格(Qualtrics导出可能带空格) response = "yes") # 标记选中的选项为yes # 2. 转回宽格式,生成二元选项列,未选中项填充为no final_data <- long_data %>% pivot_wider(id_cols = gender, names_from = c(question, options), values_from = response, values_fill = list(response = "no"))
代码说明
pivot_longer:把15个多选列统一转成“问题-选项”的长格式,一次性批量处理所有目标列,不用单独指定每个列名。separate_rows:自动拆分每个单元格里的逗号分隔值,比如"1,2,4"会拆成三行,分别对应选项1、2、4,无需手动设置拆分数量。pivot_wider:自动生成类似social_1、emotional_4的列名,未被选中的选项会统一填充为no,完全匹配卡方检验需要的二元变量格式。
对比你现有方法的优势
你之前用str_split_fixed的方式需要手动指定每个问题的最大选项数,批量处理15列会非常繁琐。上面的方法完全无需预设选项数量,只要是逗号分隔的格式就能自动识别处理,适配所有15列的批量操作。
内容的提问来源于stack exchange,提问作者user12952090
相关产品推荐
相关产品推荐

