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

基于自定义识别码合并Qualtrics多份数据集的SPSS技术问询

问题与解决方案

背景

用Qualtrics向儿童发放3份调查:

  • 最初采用10位随机码作为跨调查识别凭证,预测试发现儿童无法记住该码,改为让参与者自行生成格式为SchoolName-YearGroup-FirstInitial-DayOfBirth的易重复识别码
  • 所有参与者完成调查1和2,仅部分完成调查3,需通过该识别码合并三份调查的记录
  • 限制:Qualtrics无法直接基于该字段合并,数据集过大无法手动合并,禁止收集邮箱,不能使用Qualtrics邮箱关联方案
  • 尝试SPSS MATCH FILES命令未生效,命令如下:
MATCH FILES
  /FILE='path_to_survey2.sav'
  /BY ParticipantCode.
EXECUTE.

SPSS 正确合并方法

你之前的MATCH FILES命令只调用了单个文件,这是无效的,正确操作如下:

1. 预处理数据

确保三份数据集的识别码字段名称完全一致(如统一为ParticipantCode),且格式统一:

* 统一识别码格式:去除首尾空格、转大写.
COMPUTE ParticipantCode = UPCASE(LTRIM(RTRIM(ParticipantCode))).
EXECUTE.

* 按识别码排序,确保合并时匹配正确.
SORT CASES BY ParticipantCode.
EXECUTE.

2. 逐步合并数据集

先合并调查1和2,再将结果与调查3合并:

* 合并调查1与调查2,保留所有完成两份调查的参与者.
MATCH FILES
  /FILE='path_to_survey1.sav'
  /FILE='path_to_survey2.sav'
  /BY ParticipantCode.
EXECUTE.
SAVE OUTFILE='merged_survey1_2.sav'.

* 合并上述结果与调查3,用IN子句标记是否完成调查3.
MATCH FILES
  /FILE='merged_survey1_2.sav'
  /FILE='path_to_survey3.sav'
  /BY ParticipantCode
  /IN=completed_survey3.
EXECUTE.

* 将标记转为0/1变量,1表示完成调查3,0表示未完成.
COMPUTE completed_survey3 = completed_survey3.
EXECUTE.
SAVE OUTFILE='final_merged_data.sav'.

Python(Pandas)高效合并方案

如果SPSS处理大数据卡顿,可使用Pandas,操作更高效:

1. 读取并预处理数据

import pandas as pd

# 读取三份SPSS数据
survey1 = pd.read_spss('path_to_survey1.sav')
survey2 = pd.read_spss('path_to_survey2.sav')
survey3 = pd.read_spss('path_to_survey3.sav')

# 统一识别码格式
for df in [survey1, survey2, survey3]:
    df['ParticipantCode'] = df['ParticipantCode'].str.strip().str.upper()

2. 合并数据集

# 合并调查1和2
merged_1_2 = pd.merge(survey1, survey2, on='ParticipantCode', how='inner')

# 合并调查3,左连接保留所有已合并的参与者,标记完成状态
final_merged = pd.merge(merged_1_2, survey3, on='ParticipantCode', how='left', indicator=True)
final_merged['completed_survey3'] = final_merged['_merge'].map({'both': 1, 'left_only': 0})
final_merged.drop(columns='_merge', inplace=True)

3. 保存结果

# 保存为SPSS格式,兼容后续SPSS分析
final_merged.to_spss('final_merged_data.sav', convert_categoricals=True)
# 或保存为CSV,适合其他工具处理
final_merged.to_csv('final_merged_data.csv', index=False)

额外注意事项

  • 排查识别码重复问题:若存在多个参与者使用同一识别码,可通过性别、年龄等辅助字段区分,或手动核实修正
  • 若合并后出现缺失值,需检查识别码的拼写一致性(比如学校名称缩写不一致、出生日期格式错误等)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 12:55:58