2009-06-24 22 views
7

Gibt es ein Äquivalent der Oracle NVL-Funktion in SAS?Behandle fehlende Werte als Null in SAS where-Klausel

Zum Beispiel, wenn ich eine where-Klausel in SAS haben, der sagt:

es keine Zeilen gehen enthalten, die myVar = haben.

Wenn ich Werte als Null behandeln wollen fehlt, muss ich sagen:

where myVar > -2 or missing(myVar) 

ich etwas in der Lage sein würde gerne tun:

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

Gibt es so etwas in SAS?

+1

Hinweis ouput, dass es nur in nicht-SAS-Daten, die Zeilen mit myVar =. wird nicht enthalten sein. Der Grund dafür ist, dass fehlende Werte NULL sind und Vergleiche mit NULL immer mit FALSE ausgewertet werden. In nativen SAS-Daten werden fehlende Werte als nicht negative Zahl behandelt, die kleiner als Null ist. Also "wo myVar> -2;" funktioniert tatsächlich mit fehlenden Werten, wenn mit nativen SAS-Daten gearbeitet wird. –

Antwort

13

Die coalesce function sollte die Aufgabe erledigen.

where coalesce(myVar,0) > -2 

Ich bin mir nicht sicher, ob die Funktion in SAS 9 verfügbar wurde, wenn Sie also eine wirklich alte SAS Version haben könnte dies nicht funktionieren.

7

Die Verwendung der Koaleszenzfunktion ist der richtige Weg.

Aber wenn Sie eine alte Version von SAS, wo coalesce nicht implementiert ist, können Sie diesen Trick verwenden:

where sum(myVar,0) > -2 

Wenn Sie die sum function in SAS verwenden für das Hinzufügen, alle nicht fehlende Zahl in der Summierung wird dazu führen, dass das Ergebnis nicht fehlt.

Wenn Sie also 0 mit der Summenfunktion hinzufügen, wird ein fehlender Wert in 0 umgewandelt, und nicht fehlende Werte bleiben unverändert.

+1

+1: Das ist ein toller Vorschlag! Wir unterstützen SAS 8 nicht mehr für unser Produkt, daher ist es mir egal, ob Coalesce dann verfügbar ist oder nicht, aber wenn ich das täte, wäre das eine geniale Lösung. – Adnan

-1

Eine Sache, die y tun kann, ist wie Array varlistname var1 var2 var3 varn; wenn Array <>. dann Ausgabe;

Es wird Datensätze mit nicht fehlenden Werten

Verwandte Themen