Qualtrics Loop and Merge数据处理方案问询(附R示例)
处理Qualtrics Loop and Merge数据的方案
一、Qualtrics原生处理方法(推荐)
- 导出时直接生成目标格式:
- 进入问卷的Data & Analysis页面,点击右上角「Export Data」
- 在导出设置的「Advanced Options」中,勾选「Split Loop & Merge into Separate Rows」
- 选择导出格式(如CSV),导出后的数据即为你需要的长格式,无需额外处理
- 已导出数据的补救转换:
在Data & Analysis页面使用内置工具:- 选择「Transform Data」→「Reshape Data」→「Convert Wide to Long」
- 选中所有Loop生成的带序号列(如
1_date_time、2_inperson_virtual) - 设置分组依据为基础信息列(
org_name、website、contact),指定序号与主题的映射关系,完成转换
二、R语言简洁处理方案(tidyverse实现)
针对你提供的示例数据,用tidyr和dplyr可高效完成转换,替代繁琐的手动筛选堆叠:
首先加载依赖包:
library(tidyverse)
定义主题与序号的映射关系:
topic_map <- c("1" = "Dance", "2" = "Art", "3" = "Science", "4" = "Writing")
核心转换代码:
wanted_output <- qualtrics_output %>% # 拆分多主题为单独行,保留基础信息 separate_rows(class_topic, sep = ", ") %>% # 将宽格式Loop列转为长格式,提取序号和问题字段 pivot_longer(cols = starts_with(c("1_", "2_", "3_", "4_")), names_to = c("topic_id", ".value"), names_pattern = "(\\d+)_(.*)") %>% # 替换序号为实际主题,过滤无效NA行 mutate(class_topic = topic_map[topic_id]) %>% filter(!is.na(date_time)) %>% # 整理列顺序并移除冗余列 select(-topic_id, org_name, website, contact, class_topic, date_time, inperson_virtual)
验证输出:
print(wanted_output)
该代码可直接扩展到20+主题、15个Loop问题场景:只需更新topic_map覆盖所有主题序号,将pivot_longer的cols参数改为starts_with(as.character(1:20))即可匹配所有主题列。
内容的提问来源于stack exchange,提问作者KLenny
相关产品推荐
相关产品推荐

