Несколько условий ИЛИ в рамках DO IF, оцениваемых как SYSMIS - PullRequest
1 голос
/ 28 марта 2019

Я пытаюсь создать новую переменную, которая генерирует «1» для случая, если этот случай выбрал «1» в любой переменной в ряду других переменных. Тем не менее, попытка кода ниже оценивает каждый случай в SYSMIS, даже если некоторые респонденты выбрали «1» в переменной в ссылочном ряду переменных.

Я пытался использовать структуру DO IF с двумя ELSE IF, но без радости.

Вот что я попробовал до сих пор (переменные в ссылочной серии могут принимать «1» (желаемое значение), «0» или «998»):

*ELA dichotomous*

DO IF (w1t_gr1.2=1 OR
           w1t_gr2.2=1 OR
           w1t_gr3.2=1 OR
           w1t_gr3.2=1 OR
           w1t_gr4.2=1 OR
           w1t_gr5.2=1 OR
           w1t_gr6.2=1 OR
           w1t_gr7.2=1 OR
           w1t_gr8.2=1).
COMPUTE rw1t_ela=1.
ELSE IF (w1t_gr1.2=0 OR
           w1t_gr2.2=0 OR
           w1t_gr3.2=0 OR
           w1t_gr3.2=0 OR
           w1t_gr4.2=0 OR
           w1t_gr5.2=0 OR
           w1t_gr6.2=0 OR
           w1t_gr7.2=0 OR
           w1t_gr8.2=0).
COMPUTE rw1t_ela=0.
ELSE IF (w1t_gr1.2=998 OR
           w1t_gr2.2=998 OR
           w1t_gr3.2=998 OR
           w1t_gr3.2=998 OR
           w1t_gr4.2=998 OR
           w1t_gr5.2=998 OR
           w1t_gr6.2=998 OR
           w1t_gr7.2=998 OR
           w1t_gr8.2=998).
COMPUTE rw1t_art=0.
ELSE.
COMPUTE rw1t_art=0.
END IF.
EXECUTE.

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

1 Ответ

1 голос
/ 28 марта 2019

Синтаксис, который вы опубликовали, создает две переменные: rw1t_ela должен фактически работать так, как вы описали, а вторая переменная rw1t_art должна отсутствовать во всех случаях, когда любая из восьми исходных переменных содержит 0 или 1. Если вы замените rw1t_art на rw1t_ela в вашем синтаксисе, это должно работать хорошо.

При этом существует более эффективный способ сделать то, что вам нужно: Следующий код даст вам значение 1 в rw1t_ela, только если одна из других переменных содержит 1, и 0 во всех остальных случаях:

compute rw1t_ela=any(1, w1t_gr1.2, w1t_gr2.2, w1t_gr3.2, w1t_gr4.2, 
                        w1t_gr5.2, w1t_gr6.2, w1t_gr7.2, w1t_gr8.2).
...