Missings durch "0" ersetzten?!
Hallo,
wie schon in einem anderen Thread erwähnt arbeite ich mit den amtlichen Statistiken zur Lohn- und Einkommensteuerstatistik 2004. Da die Metadaten dazu leider nur die nötigsten Aspekte behandeln muss ich einige Variablen nachbauen um zu verstehen wie die Ämter auf die Zahlenwerte kommen.
Beispiel:
c65100 = Einkünfte aus L+F - gesamt -
c65101 = Einkünfte aus L+F - A -
c65102 = Einkünfte aus L+F - B -
Im Normalfall sollte c65100 = c65101 + c65102 gelten.
Um zu prüfen ob das tatsächlich so ist, berechne ich c65100_self = c65101 + c65102 und vergleiche anschließend c65100 mit c65100_self.
Nun sind die Variablen c65101 und c65102 in den seltensten Fällen mit Zahlenwerten belegt. Da bei SAS "X + Missing = Missing" gilt, wollte ich alle Missings im Datensatz durch eine 0 ersetzen um problemlos mit den Variablen rechnen zu können.
Hat von euch einer eine Idee wie ich das effektiv machen kann?
Besten Dank für die Hilfe
Swen
- Anmelden oder Registrieren um Kommentare zu schreiben

Hallo Swen, handelt es sich
Hallo Swen,
handelt es sich um einfache Summierung, kannst du das Problem mit Funktion Sum() umgehen.
/* ... */
c65100 = sum(L,F,-gesamt,- ...);
c65101 = sum(L,F,-A,- ...);
c65102 = sum(L,F,-B,- ...);
/* ... */
run;
Bei der Sum-Funktion bekommst du nur dann ein Missing Value, wenn alle Argumente einen Missing-Value enthalten. Der Vorteil ist, dass Du Missing Values weiter von 0 unterscheiden kannst.
Ansonsten kannst du ein Array verwenden.
/* ... */
array temp L F Gesamt A B;
do over temp;
if temp = . then temp = 0;
end;
/* ... */
run;
Mit diesem Code werden alle Missing Values in den Variablen, die zum Array temp gehören, auf 0 gesetzt
Schöne Grüße
Jan
Hallo Jan, das hat mir sehr
Hallo Jan,
das hat mir sehr weitergeholfen, vielen Dank!
Gibt es beim Array einen Befehl die Missing Values ALLER Variablen des Datensatzes durch 0 zu ersetzen?
á la: array temp ALL; o.ä. :-)
Schöne Grüße
Swen
_numeric_
Hallo Swen,
in einem Array kannst du nur numerische- oder nur character-Variablen verarbeiten.
/* ... */
/* Alle numerischen Variablen */
array num _numeric_;
do over num;
if num = . then Num = 0;
end;
/* ... */
/* Alle Textvariablen */
array char _character_;
do over char;
if Missing(char) then char = "Missing";
end;
/* ... */
run;
Schöne Grüße
Jan
Funktioniert!
Hallo Jan,
das Array läuft! Besten Dank dafür!
Beste Grüße
Swen