Как определить, содержит ли строка букв определенную букву в SPSS - PullRequest
1 голос
/ 20 марта 2020

Я работаю с данными из опроса с несколькими вариантами ответов. Респонденты опроса смогли выбрать варианты A, B, C и / или D. В файле данных просто перечислены выбранные ответы, без пробелов, запятых или точек с запятой между ними. Например, данные для респондента, который выбрал варианты A и C, будут просто "A C"; данные для респондента, который выбрал варианты A, B, C и D., будут "ABCD".

Мне нужно создать 4 новые переменные, которые указывают, выбрал ли респондент каждый из 4 вариантов (т. е. если они не выбрали A, то A = 0; если они выбрали A, то A = 1 и т. д.). Как мне сделать это с моими строковыми данными, если между ответами нет пробелов или запятых? Буду очень признателен за вашу помощь!

1 Ответ

2 голосов
/ 21 марта 2020

ОП правильно намекнул на ответ в своем комментарии, но для ясности и в духе переполнения стека, вот полный ответ:

Предполагая, multi_answer является строковой переменной, содержащей Ответ на опрос:

DO REPEAT answers="A" "B" "C" D"
/vars=var1 to var4.
COMPUTE vars=0.
if CHAR.INDEX(multi_answer,answers)<>0 vars=1.
END REPEAT.
EXECUTE.

Редактировать : Согласно комментарию eli-k, более синтетический c способ использовать это внутри структуры DO REPEAT END REPEAT: compute vars=char.index(multi_answer,answers)>0., поэтому вам не нужно compute vars=0. Конец редактирования.

Оба кода создадут 4 переменные (var1 var2 var3 var4) со значениями 0 или 1, как описано в вопрос.

IBM SPSS Официальная справка по строковым функциям (включая CHAR.INDEX function): https://www.ibm.com/support/knowledgecenter/pl/SSLVMB_23.0.0/spss/base/syn_transformation_expressions_string_functions.html

Также возможный дубликат этого :): SPSS: как найти текст в тексте?

...