将文字答案变成二元变量

时间:2018-07-04 21:23:33

标签: sql data-analysis spss

我已经使用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。

我希望这有道理。并先谢谢您。

2 个答案:

答案 0 :(得分:0)

有很多方法可以做到这一点,所以这里是一种。 首先制作一些虚假数据进行演示:

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.

答案 1 :(得分:0)

如果您想一次执行一次此变量,则可以使用:

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 .

请记住,通过这种方式循环将通过“响应序列”对新变量进行排序,这与问卷调查的顺序相反。如果您想重新排序或重命名新变量,可以单独进行。