7

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中有这样的东西吗?

4

3 回答 3

13

合并功能应该可以完成这项工作。

where coalesce(myVar,0) > -2

我不确定该功能是否在 SAS 9 中可用,因此如果您有一个非常旧的 SAS 版本,这可能无法正常工作。

于 2009-06-25T04:04:37.720 回答
7

使用 coalesce 函数是正确的方法。

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

where sum(myVar,0) > -2

如果使用 SAS 中的sum 函数进行加法,求和中的任何非缺失数字都将强制结果为非缺失。

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

于 2009-06-26T13:37:38.813 回答
-1

y 可以做的一件事是数组 varlistname var1 var2 var3 varn; 如果数组<>。然后输出;

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

于 2010-06-10T15:13:40.557 回答