Объединение набора переменных с множественным выбором (выберите все подходящие варианты) в один

Я пытаюсь объединить набор переменных «выбрать все, что применимо» в одну переменную из набора данных, загруженного из Qualtrics.

В настоящее время Qualtrics создает переменную для каждого возможного выбора, присваивая «1», если респондент выбрал ее, и «.» за отсутствие, если респондент не выбрал его.

В этом конкретном случае (расовые категории) я просто продублировал каждую переменную, присвоил каждой переменной уникальный номер для «выбранного» (например, значение 1, выбранное белыми, было преобразовано в 100), а затем добавил все дублированные переменные вместе в новая переменная. Это давало каждому случаю уникальный номер, который мог представлять или не представлять несколько расовых категорий.

Таким образом, новые метки для респондента, отметившего несколько вариантов ответа, выглядели примерно так: «Белый И азиат» вместо «1» в каждой из этих отдельных переменных, например.

Я думал, однако, что, вероятно, есть более простой способ сделать это?

РЕДАКТИРОВАТЬ: синтаксис приведен ниже.

Перекодировать в переменную гонки с уникальным значением для каждого выбора

RECODE w1srace_1 (1=1) (ELSE=Copy) INTO r2w1srace_1.
VARIABLE LABELS  r2w1srace_2 'recoded to higher values'.
EXECUTE.

RECODE w1srace_2 (1=5) (ELSE=Copy) INTO r2w1srace_2.
VARIABLE LABELS  r2w1srace_2 'recoded to higher values'.
EXECUTE.

RECODE w1srace_3 (1=10) (ELSE=Copy) INTO r2w1srace_3.
VARIABLE LABELS  r2w1srace_3 'recoded to higher values'.
EXECUTE.

RECODE w1srace_4 (1=20) (ELSE=Copy) INTO r2w1srace_4.
VARIABLE LABELS  r2w1srace_4 'recoded to higher values'.
EXECUTE.

RECODE w1srace_5 (1=50) (ELSE=Copy) INTO r2w1srace_5.
VARIABLE LABELS  r2w1srace_5 'recoded to higher values'.
EXECUTE.

RECODE w1srace_6 (1=100) (ELSE=Copy) INTO r2w1srace_6.
VARIABLE LABELS  r2w1srace_6 'recoded to higher values'.
EXECUTE.

RECODE w1srace_7 (1=200) (ELSE=Copy) INTO r2w1srace_7.
VARIABLE LABELS  r2w1srace_7 'recoded to higher values'.
EXECUTE.

RECODE w1srace_8 (1=500) (ELSE=Copy) INTO r2w1srace_8.
VARIABLE LABELS  r2w1srace_8 'recoded to higher values'.
EXECUTE.

**Create new combined race variable**

COMPUTE r3w1srace=sum(r2w1srace_1,r2w1srace_2,r2w1srace_3,r2w1srace_4,r2w1srace_5,r2w1srace_6,r2w1srace_7,r2w1srace_8).
EXECUTE.

person Eric Williamson    schedule 16.07.2018    source источник
comment
Пожалуйста, добавьте свой текущий синтаксис к вопросу, чтобы мы могли лучше понять, что вы уже сделали, и где мы можем предложить улучшения.   -  person eli-k    schedule 16.07.2018
comment
Я только что включил синтаксис - спасибо за ваш ответ! Похоже, мы сделали что-то подобное.   -  person Eric Williamson    schedule 16.07.2018
comment
Верно. Преимущество предложенного мной синтаксиса (кроме использования только одной строки, конечно) заключается в том, что вы можете интерпретировать результат визуально, представляя собой комбинацию нулей и единиц, соответствующих исходным восьми переменным.   -  person eli-k    schedule 16.07.2018


Ответы (2)


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

data list list/dog cat mouse frog bird (5f1).
begin data
1 0 0 1 0
0 1 0 1 0
0 0 0 1 1
0 1 0 0 0
1 1 1 1 1 
1 0 1 0 1
0 0 0 0 0
end data.

Простой способ объединить все категории в один номер:

compute mult_categoryN = 10000*dog + 1000*cat +100*mouse +10*frog + bird.

Чтобы создать текстовую переменную, которая будет иметь уникальное имя для каждой комбинации категорий, вы можете пойти следующим образом:

string mult_categoryT (a50).
compute #=0.
do repeat vr=dog cat mouse frog bird/ct="dog" "cat" "mouse" "frog" "bird".
    do if vr=1.
        if #=0 mult_categoryT=ct.
        if #>0 mult_categoryT=concat(rtrim(mult_categoryT), " and ", ct).
        compute #=#+1.
    end if.
end repeat.
exe.
person eli-k    schedule 16.07.2018
comment
Спасибо за это - если я захочу, могу ли я сделать это числовой (номинальной) переменной? Кроме того, что здесь указывает ct? - person Eric Williamson; 16.07.2018
comment
Первый вариант, который я дал (mult_categoryN), предназначен для номинальной числовой переменной. Rect - это элемент в цикле: vr представляет имена переменных, ct представляет фактические имена категорий (в вашем случае они должны быть белыми, азиатскими и т. д.). - person eli-k; 16.07.2018

Вероятно, сейчас уже слишком поздно, но самым простым способом было бы создать встроенную переменную в потоке опроса Qualtrics и присвоить ей значение выбранных вариантов вопроса. Это дало бы вам список вариантов текста, разделенных запятыми.

Кое-что, что нужно иметь в виду для будущих опросов.

person T. Gibbons    schedule 16.07.2018