为什么SAS中的以下代码片段给出输出x = 1?。 我很困惑。
data strange;
x=.;
if x < 10 then x=1;
else if x >= 10 then x=2;
else x=3;
run;
答案 0 :(得分:5)
如Order of Missing Values和SAS 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
因为缺失)。