data e;
input a $ b;
if b=. then c='unknown';
else if b=1 then c='low';
else if b=2 or 3 then c='medium';
else c='high';
cards;
frank 1
joan 2
sui 2
jose 3
burt 4
kelly .
juan 5
;
run;
data e;
input a $ b;
if b=. then c='unknown';
else if b=1 then c='low';
else if b=2 or 3 then c='medium';
else c='high';
/* 由于SAS中没有elseif分句,这是else+一个完整的if语句
若没有b=,则else c='high';没有机会被执行
*/ cards;
frank 1
joan 2
sui 2
jose 3
burt 4
kelly .
juan 5
;
run;
楼主,此题关键点不在最后一句else有没有‘b=’,而在于前面的一句
“else if b=2 or 3 then c='medium';”
这句中的条件有两个:“b=2” 和 “3”。 前面的条件只有在b的值是2时为真;而后面的“3”跟变量b是没有关系的,也就是说这个条件永远都是真的。
换句话说,这句过后,就不会在有“else”的情况了,因此“else c='high';”这句永远没有机会执行。
楼主可以将这句改为:
else if b=2 or b=3 then c='medium';
或者:
else if b in (2, 3) then c='medium';