在SAS where子句中将缺失值视为零

时间:2009-06-24 19:43:40

标签: sas

SAS中是否有等效的Oracle NVL功能?

例如,如果我在SAS中有where子句,则说:

where myVar > -2;

它不会包含任何具有myVar =。

的行

如果我想将缺失值视为零,我必须说:

where myVar > -2 or missing( myVar )

我希望能够做到这样的事情:

where NVL( myVar, 0 ) > -2 // or some SAS equivalent

SAS中有这样的东西吗?

3 个答案:

答案 0 :(得分:13)

coalesce function应该完成这项工作。

where coalesce(myVar,0) > -2

我不确定该功能是否在SAS 9中可用,所以如果您有一个非常旧的SAS版本,这可能无效。

答案 1 :(得分:7)

使用coalesce函数是执行此操作的正确方法。

但是如果你有一个旧版本的SAS没有实现合并,你可以使用这个技巧:

where sum(myVar,0) > -2

如果您使用SAS中的sum function进行添加,则总和中的任何非缺失数字都会强制结果不会丢失。

因此,使用sum函数添加0会将缺失值转换为0,并且非缺失值将保持不变。

答案 2 :(得分:-1)

你可以做的一件事是 喜欢 array varlistname var1 var2 var3 varn; 如果数组<&gt ;.然后输出;

它将输出具有非缺失值的数据集