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
相关产品推荐
相关产品推荐

