我正在运行以下代码:
data new;
set old;
if visits=. then band='Poor';
else if visits=1 or visits=2 then band='Low';
else band='High';
run;
我的困惑是当else if语句改为:
else if visits=1 or 2 then band='Low';
为什么值Low
显示为访问次数大于2而不是High
的情况的频段?
答案 0 :(得分:3)
这是因为在这种情况下你的if
语句有问题:
else if visits=1 or 2 then band='Low';
你错误地认为这是有效的:
if visits is 1, or visits is 2 then ...
事实上,这实际上是:
if visits is 1, or 2 is true then ...
所以你说的是2 = true
,它做了(所有非零值都隐含为真)。有效地,您的最终else
语句(对于High
)始终被忽略,因为else if
将始终为真。
坚持原始陈述,这完全符合您的预期:
else if visits=1 or visits=2 then band='Low';