В серии утверждений IF - ELSE IF работает только первый IF - PullRequest
0 голосов
/ 16 января 2019

Я пытаюсь создать новую переменную "X" из переменных "A", "B" и "C". Это код, который я использую.

Я получаю только первый параметр "VAS_USAGE = 1", остальные параметры теряются. Я хотел, чтобы VAS_USAGE имел значения от 1 до 6.
Что я делаю неправильно?

 ```
compute VAS_USAGE=0.
DO IF ((VAS1=1) AND (VAS2=1) AND (VAS3=1)). 
COMPUTE VAS_USAGE=1.
ELSE IF ((VAS1=1) AND (VAS2=1) AND (VAS3=0)).
COMPUTE VAS_USAGE=2.
ELSE IF ((VAS1=1) AND (VAS2=0) AND (VAS3=1)).
COMPUTE VAS_USAGE=3.
ELSE IF ((VAS1=1) AND (VAS2=0) AND (VAS3=0)).
COMPUTE VAS_USAGE=4.
ELSE IF ((VAS1=0) AND (VAS2=0) AND (VAS3=1)). 
COMPUTE VAS_USAGE=5.
ELSE IF ((VAS1=0) AND (VAS2=0) AND (VAS3=0)). 
COMPUTE VAS_USAGE=6.
END IF.   
EXECUTE.```

Вот так выглядит вложенная таблица. Это то, что я ожидал получить.

enter image description here Это то, что я получил.

1,00 = 63

1 Ответ

0 голосов
/ 16 января 2019

По предложению @ user45392 я бы проверил, действительно ли ответы «да» и «нет» закодированы как 1 и 0. В любом случае я бы предложил избегать сложной схемы «делать, если», которая может быть подвержена ошибкам и более трудна для отладки. Например, вы можете создать VAS_USAGE следующим образом:

compute VAS_USAGE = 100*VAS1 + 10*VAS2 + VAS3.

Или, если вы хотите придерживаться определенных значений, которые вы указали в своем сообщении, добавьте:

recode VAS_USAGE (111=1)(110=2)(101=3)(100=4)(1=5)(0=6).

Также, если вам нужен простой индекс от 1 до 8, вы можете сделать это:

compute VAS_USAGE = 4*VAS1 + 2*VAS2 + VAS3 + 1.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...