SAS否则如果条款混淆

时间:2015-06-17 10:57:00

标签: if-statement sas

我正在运行以下代码:

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的情况的频段?

1 个答案:

答案 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';