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

如何生成变量判断受访者是否使用了问卷全部应答类别

问卷新变量生成实现方案

以下是不同常用数据处理工具的操作方法,假设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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 00:30:02