2013-06-01 18 views
6

Wie ersetzen Sie alle fehlenden Werte durch Nullen in SAS? Ich habe eine Textdatei, die ich in SAS ablege, um einige Geodaten zu verarbeiten, aber wenn es einen fehlenden Wert hat, unterbricht es die Operationen. Gibt es eine Möglichkeit, dies zu ändern, ohne jedes Feld zu spezifizieren? Ich habe mehr als 200Ersetzen Sie fehlende Werte in SAS

Die Art, wie ich so tun ist:

data geo_cali_north; 
set geo_cali_north; 
if polar_data eq . then 0; 
if lat_xvar eq . then 0; 
run; 

Wie kann ich tun dies für jedes Feld zu vermeiden?

Antwort

16

Sie können alle fehlenden Werte auf 0 mit wie folgt festgelegt: „“

data myData; 
set myData; 
array a(*) _numeric_; 
do i=1 to dim(a); 
if a(i) = . then a(i) = 0; 
end; 
drop i; 

Dies wird jede numerische konvertieren zu einer 0

+0

Das funktioniert super! Danke! –

+1

kein Problem :) Wenn Sie es nützlich finden, denken Sie bitte darüber nach, diese Frage zu beantworten und zu akzeptieren, damit sie für andere Benutzer nützlich bleibt. – isJustMe

+2

Ich würde eine leichte Modifikation vorschlagen; anstelle von "wenn a (i) -...." ist eine bessere Lösung "a [i] = koaleszieren (a [i], 0);"; das wird für spezielle Missings (.A .B .Z usw.) zusätzlich funktionieren. fehlt. (Die MISSING-Funktion würde das auch tun, das ist etwas schneller, glaube ich.) Coalesce gibt den ersten nicht fehlenden Wert aus einer Werteliste zurück. – Joe

7

einem weiteren Option: wahrscheinlich schneller als die datastep Option für großen Datensätze

proc stdize data=mydata reponly missing=0 out=newdata; 
var _numeric_; 
run; 

Wenn Sie SAS/STAT haben.

+0

Dies funktioniert nicht, wenn alle Werte in dieser Spalte fehlen. – Lovnlust

Verwandte Themen