Я немного озадачен, почему вывод определенным образом выполняется в следующей программе.
data a;
input name$ lv @@;
cards;
Frank 1 Joan 2 Sui 3 Burt 4 Kelly . Juan 1
;
data b;
set a;
if lv=.
then expertise='?';
else if lv=1
then expertise='L';
else if lv=2 or 3
then expertise ='M';
else expertise ='H';
run;
proc print data=b;
run;
В вышеприведенной программе я ожидаю, что вывод для наблюдения, содержащего Берта, имеет экспертную оценку значения H, но по какой-то причине это M.
Я думал, что утверждение if должно быть lv = (2 или 3), но когда я делаю это сейчас, то те, которые думают, что lv = 2 и lv = 3, чья экспертиза должна равняться M, теперь тоже становятся H.
* Это, вероятно, объясняется тем, что синтаксис не подходит, и lv никогда не бывает (2 или 3) / Я не уверен, почему это не вызывает ошибку /, таким образом, оператор ELSE казнены.
У меня такое чувство, что я не понимаю, как на самом деле работает ELSE.
Однако в соответствии с этой логикой, если часть lv = 2 распознается, а остальные нет, я не уверен, почему lv = 3 и lv = 4 не дают H.
Моя цель - понять, почему программа работает так, как будто нет синтаксической ошибки, и почему вывод такой, какой он есть.