2009-06-24 111 views
7

SAS中是否有等效的Oracle NVL功能?將SAS中的缺失值視爲零在哪裏條款

舉例來說,如果我有SAS,說where子句:

它是不會包括具有myVar的=任何行。

如果我要處理缺失值爲零,我不得不說:

where myVar > -2 or missing(myVar) 

我希望能夠做這樣的事情:

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

有沒有這樣的東西在SAS?

+1

請注意,這只是在非SAS數據與myVar的=行的數據集。將不包括在內。原因是缺少的值是NULL,並且與NULL的比較總是計算爲FALSE。 在原生SAS數據中,缺失值被視爲非負數,該數字小於零。 所以「哪裏myVar> -2;」在本地SAS數據上運行時,實際上會使用缺失值。 – 2009-06-26 13:46:56

回答

13

coalesce function應該做的工作。

where coalesce(myVar,0) > -2 

我不知道,如果功能SAS 9變得可用,所以如果你有一個很老的SAS版本可能無法正常工作。

7

使用coalesce函數是正確的方法。

但是,如果你有一箇舊版本的SAS的聚結在那裏沒有實現,你可以用這一招:如果您在SAS使用sum function在添加任何非缺失數

where sum(myVar,0) > -2 

總和會迫使結果不失蹤。

因此,用sum函數加0會將缺失值轉換爲0,並且非缺失值將保持不變。

+1

+1:這是一個很棒的建議!我們不再支持我們的產品的SAS 8,所以我真的不在乎是否可以合併,但如果我這樣做,這將是一個巧妙的解決方法。 – Adnan 2009-06-26 23:36:19

-1

y可以做的一件事是 like array varlistname var1 var2 var3 varn; if array <>。然後輸出;

它將輸出中具有非缺失值