缺少的值在SAS中被视为最低值?
为什么SAS中的以下代码给出了x=1的输出?。 我很困惑缺少的值在SAS中被视为最低值?,sas,Sas,为什么SAS中的以下代码给出了x=1的输出?。 我很困惑 data strange; x=.; if x < 10 then x=1; else if x >= 10 then x=2; else x=3; run; 数据奇怪; x=。; 如果x=10,则x=2; 否则x=3; 跑 如和中所述: 在SAS中,数字变量的缺失值小于所有数字;如果按数值变量对数据集进行排序,则缺少该变量值的观测值将首先显示在已排序的数据集中。对于数字变量,您可以将特殊缺失值与数字进行比
data strange;
x=.;
if x < 10 then x=1;
else if x >= 10 then x=2;
else x=3;
run;
数据奇怪;
x=。;
如果x<10,则x=1;
否则,如果x>=10,则x=2;
否则x=3;
跑
如和中所述:
在SAS中,数字变量的缺失值小于所有数字;如果按数值变量对数据集进行排序,则缺少该变量值的观测值将首先显示在已排序的数据集中。对于数字变量,您可以将特殊缺失值与数字进行比较,并相互比较
因此,“小于”的测试将包括缺少的值。您需要添加
if x < 10 and not missing(x) then x=1;
但是,这在您的情况下不起作用,因为:
y = ifn(x<10,1,2,3);
y=ifn(x简单的答案是“缺失”(x=。
)是最小的数字,因此小于10。你希望x什么时候等于3?@Grayson当然,当所有其他方法都失败时。最后一个其他方法是捕获所有其他方法。我希望输出为x=3。但它给我x=1。无论如何,Chris给了我答案。缺少的值被SAS视为最小的数字。我认为缺少就像OO语言中的空值一样。总是首先检查是否缺失,然后继续。@ChrisJ实际上,特殊缺失值(x=。
)低于(x=。
)
y = ifn(x<10,1,2,3);