将文本答案转化为二分变量

Turning textual answers into dichotomous variables

我已经使用 google 表格进行了研究,现在我需要准备这些数据以供进一步分析。关键是我真的不知道该怎么做。 我有变量(问卷问题),每个问题都有四个答案。在我的数据中,这些答案只是字符串,所以我们说:

Variable 1 (Here is a question)
Value = Answer (C. The answer) 

现在我需要将这些变量中的每一个分成四个不同的变量,并且该数据的表示应该如下所示:

Variable 1_1 where Value = 0
Variable 1_2 where Value = 0
Variable 1_3 where Value = 1 -> because as you seen above answer C was chosen.
Variable 1_4 where Value = 0

这是重新编码的部分。它不再是字符串,而是 0 或 1。

好吧,我希望这是有道理的。提前谢谢你。

有很多方法可以做到这一点,这里介绍一种。 首先做一些假数据来演示:

data list free/var1 to var4 (4a1).
begin data 
"a" "b" "a" "c" "c" "b" "a" "c"  "d" "d" "a" "b"
end data.

现在每个可能的答案都有一个单独的 recode 命令 - 每个命令都会处理所有具有这些可能答案的相关变量:

recode var1 to var4  ("a"=1)(else=0)  into varA1 to varA4.
recode var1 to var4  ("b"=1)(else=0)  into varB1 to varB4.
recode var1 to var4  ("c"=1)(else=0)  into varC1 to varC4.
recode var1 to var4  ("d"=1)(else=0)  into varD1 to varD4.

如果你想一次做一个变量,你可以使用:

IF (variable1="a") variable1_1=1 .
IF (variable1="b") variable1_2=1 .
IF (variable1="c") variable1_3=1 .
IF (variable1="d") variable1_4=1 .
RECODE variable1_1 TO variable1_4 (SYSMIS=0) .
EXE .

如果您的所有变量都具有相同的响应结构,并且您想一次遍历所有变量,则可以使用 VECTOR 来实现。

VECTOR variable = variable1 TO variable100 /* existing variables */ .
VECTOR response1_var = response1_var (100,F1) /* create new vars, response1_var1 TO response1_var100 */ .
VECTOR response2_var = response2_var (100,F1) /* create new vars, response2_var1 TO response2_var100 */ .
VECTOR response3_var = response3_var (100,F1) .
VECTOR response4_var = response4_var (100,F1) .
LOOP #i = 1 TO 100 .
IF (variable(#i)="a") response1_var(#i)=1 .
IF (variable(#i)="b") response2_var(#i)=1 .
IF (variable(#i)="c") response3_var(#i)=1 .
IF (variable(#i)="d") response4_var(#i)=1 .
END LOOP .
RECODE response1_var1 TO response4_var100 (SYSMIS=0) .
EXE .

请记住,以这种方式循环将按照 "response series" 对您的新变量进行排序,这与调查问卷的顺序相反。如果您想重新排序或重命名您的新变量,可以单独完成。