Превращение текстовых ответов в дихотомические переменные - PullRequest
0 голосов
/ 05 июля 2018

Я провел исследование, используя формы 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 голосов
/ 08 июля 2018

Если вы хотите сделать эту одну переменную за раз, вы можете использовать:

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 .

Имейте в виду, что циклическое прохождение таким образом упорядочит ваши новые переменные по "серии ответов", а не по порядку вопросника. Если вы хотите изменить порядок или переименовать новые переменные, это можно сделать отдельно.

0 голосов
/ 06 июля 2018

Есть много способов сделать это, так что вот один. Сначала создадим поддельные данные для демонстрации:

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.
...