如何生成变量判断受访者是否使用了问卷全部应答类别
问卷新变量生成实现方案
以下是不同常用数据处理工具的操作方法,假设30个题项的变量名统一为q1到q30,你可以根据自己的实际变量名修改对应代码:
SPSS 操作
* 分别统计每位受访者选择1、2、3的题项数量 COUNT count_1 = q1 to q30 (1). COUNT count_2 = q1 to q30 (2). COUNT count_3 = q1 to q30 (3). * 生成布尔型标记变量:1=使用过全部三类应答,0=未使用全 COMPUTE used_all = (count_1 > 0 AND count_2 > 0 AND count_3 > 0). EXECUTE. * 若需要生成Yes/No格式的文本变量,取消注释下方代码运行即可 * DO IF used_all = 1. * COMPUTE used_all_label = "Yes". * ELSE. * COMPUTE used_all_label = "No". * END IF. * EXECUTE.
R 操作
# 假设数据集存储在数据框df中 # 逐行判断应答去重后是否包含全部三类值,默认排除缺失值 df$used_all <- apply(df[, paste0("q", 1:30)], 1, function(x) length(unique(na.omit(x))) == 3) # 转换为Yes/No文本格式 df$used_all_label <- ifelse(df$used_all, "Yes", "No")
Stata 操作
* 统计三类应答的出现次数 gen count1 = 0 gen count2 = 0 gen count3 = 0 foreach var of varlist q1-q30 { replace count1 = count1 + 1 if `var' == 1 replace count2 = count2 + 1 if `var' == 2 replace count3 = count3 + 1 if `var' == 3 } * 生成标记变量 gen used_all = (count1 > 0 & count2 > 0 & count3 > 0) * 生成Yes/No文本变量 gen used_all_label = cond(used_all == 1, "Yes", "No")
Python(Pandas)操作
import pandas as pd # 自定义判断逻辑:检查单条应答记录是否包含全部三类值 def has_all_responses(row): response_set = set(row.dropna()) return {1,2,3}.issubset(response_set) # 应用规则生成新变量 question_cols = [f'q{i}' for i in range(1, 31)] df['used_all'] = df[question_cols].apply(has_all_responses, axis=1) # 转换为Yes/No文本格式 df['used_all_label'] = df['used_all'].map({True: 'Yes', False: 'No'})
注意事项
- 所有方法默认排除缺失值(未作答的题项不计入统计),如果需要将空答归为特定类别,自行调整判断逻辑即可
- 代码中的题项变量名需要替换为你实际使用的变量名,不要直接照搬
q1到q30的写法
内容的提问来源于stack exchange,提问作者user14335155
相关产品推荐
相关产品推荐

