缺失值被认为是SAS中的最低值?

时间:2016-06-06 18:37:20

标签: sas

为什么SAS中的以下代码片段给出输出x = 1?。 我很困惑。

data strange;
x=.;
if x < 10 then  x=1;
    else if x >= 10 then x=2;
    else x=3;
run;

1 个答案:

答案 0 :(得分:5)

Order of Missing ValuesSAS Operators In Expressions中所述:

  

在SAS中,数字变量的缺失值小于所有数字;如果您按数字变量对数据集进行排序,则对该变量缺少值的观察将首先出现在已排序的数据集中。对于数字变量,您可以将特殊缺失值与数字相互比较。

因此,测试不到&#39;将包括缺失值。你需要添加

if x < 10 and not missing(x) then x=1;

或类似。

但有一种情况并非如此:使用ifn(或ifc)函数。那些支持三个有价值的逻辑:

y = ifc(x,'Nonzero','Zero','Missing');

但是,在您的情况下,这不起作用,如:

y = ifn(x<10,1,2,3);

永远不会评估为丢失(因为x<10评估为true因为缺失)。