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

SPSS基于多变量生成二分类变量:需满足至少6个指定条件

解决方法

核心思路是把每个条件转化为0/1的指示变量(满足得1,不满足得0),对这些变量求和后判断总和是否≥6,以此生成取值为0或1的目标变量。以下是几种常用工具的实现方式:

1. SPSS 实现

COMPUTE cond1 = (Q25=3).
COMPUTE cond2 = (Q39=2).
COMPUTE cond3 = (Q38=1).
COMPUTE cond4 = (Q37=3).
COMPUTE cond5 = (Q36=2).
COMPUTE cond6 = (Q35=1).
COMPUTE cond7 = (Q34=1).
COMPUTE cond8 = (Q33=3).
COMPUTE cond9 = (Q32=2).
COMPUTE target_var = (SUM(cond1 to cond9) >= 6).
EXECUTE.

SPSS中逻辑表达式会自动转换为1(真)或0(假),用SUM求和后判断是否达到6个及以上满足条件,结果同样自动转为0/1。

2. R 实现

简洁写法

library(dplyr)

df <- df %>%
  mutate(
    target_var = as.integer(
      (Q25==3) + (Q39==2) + (Q38==1) + (Q37==3) + (Q36==2) + 
      (Q35==1) + (Q34==1) + (Q33==3) + (Q32==2) >= 6
    )
  )

R中逻辑值TRUE/FALSE进行算术运算时会自动转为1/0,直接求和后判断即可,最后用as.integer确保输出为0/1类型。

3. Python Pandas 实现

import pandas as pd

df['target_var'] = (
    (df['Q25'] == 3).astype(int) +
    (df['Q39'] == 2).astype(int) +
    (df['Q38'] == 1).astype(int) +
    (df['Q37'] == 3).astype(int) +
    (df['Q36'] == 2).astype(int) +
    (df['Q35'] == 1).astype(int) +
    (df['Q34'] == 1).astype(int) +
    (df['Q33'] == 3).astype(int) +
    (df['Q32'] == 2).astype(int)
) >= 6

df['target_var'] = df['target_var'].astype(int)

先将每个条件的布尔结果转为整数0/1,求和后判断是否≥6,最后再将布尔结果转为整数类型的0/1。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 20:40:29