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

Adn*_*nan 7 sas

SAS中是否有相当于Oracle NVL的功能?

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

where myVar > -2;
Run Code Online (Sandbox Code Playgroud)

它不会包含任何具有myVar =的行.

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

where myVar > -2 or missing( myVar )
Run Code Online (Sandbox Code Playgroud)

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

where NVL( myVar, 0 ) > -2 // or some SAS equivalent
Run Code Online (Sandbox Code Playgroud)

在SAS中有类似的东西吗?

Vil*_*nen 13

COALESCE函数应该做的工作.

where coalesce(myVar,0) > -2
Run Code Online (Sandbox Code Playgroud)

我不确定该功能是否在SAS 9中可用,所以如果你有一个非常旧的SAS版本,这可能不起作用.


Mar*_*und 7

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

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

where sum(myVar,0) > -2
Run Code Online (Sandbox Code Playgroud)

如果使用SAS中的sum函数进行添加,则求和中的任何非缺失数将强制结果不会丢失.

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