Es ist nicht ungewöhnlich, dass eine Kreuztabellierung von zwei Variablen Zellen mit Nullzählungen erzeugt. In diesen Fällen werden in der Ausgabe von proc freq mit der Option list die Kombinationen von Variablenwerten mit Nullwerten ausgelassen. z.B. gibt es in den Beispieldaten unten keine Fälle, in denen gender = 2 undeth = 2 ist. Der unten stehende Datensatz enthält drei Variablen. Zwei Variablen, Geschlecht und eth, sind die kategorischen Variablen, die wir kreuztabellieren möchten. Die dritte Variable ist count, eine Häufigkeitsgewichtung, die die Anzahl der Fälle mit diesem Muster im Datensatz angibt, d. h., es gibt 21 Fälle, in denen gender=1 und eth=3 ist.
data test; input gender eth count;datalines;1 1 121 2 121 3 212 1 22 3 43;run;
Wenn wir proc freq ohne die Option list ausführen, enthält die Tabelle die Zelle mit einer Anzahl von Null (d.h. gender=2 und eth=2). Die Anweisung weight gibt an, dass die Variable count verwendet werden soll, um die Anzahl der Fälle mit jedem Muster im Datensatz zu bestimmen.
proc freq data = test; weight count; table gender*eth;run; The FREQ Procedure Table of gender by ethgender ethFrequencyPercent Row Pct Col Pct 1 2 3 Total 1 12 12 21 45 13.33 13.33 23.33 50.00 26.67 26.67 46.67 85.71 100.00 32.81 2 2 0 43 45 2.22 0.00 47.78 50.00 4.44 0.00 95.56 14.29 0.00 67.19 Total 14 12 64 90 15.56 13.33 71.11 100.00
Die Ausführung von proc freq mit der Option list, wie unten gezeigt, erzeugt jedoch eine Tabelle ohne eine Zeile für gender=2 und eth=2, da die Anzahl für diese Kombination null ist.
proc freq data = test; weight count; table gender*eth /missprint list;run; Cumulative Cumulativegender eth Frequency Percent Frequency Percent 1 1 12 13.33 12 13.33 1 2 12 13.33 24 26.67 1 3 21 23.33 45 50.00 2 1 2 2.22 47 52.22 2 3 43 47.78 90 100.00
Es ist möglich, mit ein wenig Arbeit eine Tabelle wie die oben gezeigte zu erhalten, die die fehlende Zelle enthält. Der erste Schritt besteht darin, eine Variable zu erstellen, die eine Konstante gleich eins ist. Wir tun dies im Folgenden mit der Variable eins.
data test; set test; one = 1;run;
Als Nächstes werden wir ods verwenden, um die Ausgabe der Ausführung von proc means zu erfassen. Die Option summary = t weist SAS an, die von proc means erzeugte Zusammenfassung in einem Dataset t zu speichern. Im Befehl proc means gibt die Option n an, dass nur das n (d.h. die Anzahl der Fälle) berechnet werden soll. Die Option completetypes gibt an, dass alle Kombinationen der Klassenvariablen (Geschlecht und eth) aufgelistet werden sollen, einschließlich derer mit Nullzählungen im Datensatz; andernfalls würden sie weggelassen. Die Option freq gibt an, dass die Variable count als die Anzahl der Fälle verwendet werden soll, die einem bestimmten Muster im Datensatz folgen (d.h. in diesem Beispiel tut die Option freq in proc means das, was weight in proc freq tat). Die var-Anweisung gibt die Variable an, über die Statistiken berechnet werden sollen; hier wird die Variable one verwendet.
ods output summary = t;proc means data = test n completetypes; class gender eth; freq count; var one;run; The MEANS Procedure Analysis Variable : onegender eth N Obs N 1 1 12 12 2 12 12 3 21 21 2 1 2 2 2 0 0 3 43 43
Dadurch wird ein Datensatz t (unten dargestellt) mit sechs Beobachtungen erstellt, eine für jede Kombination von eth nach Geschlecht, die beide als Variablen in unserem neuen Datensatz erscheinen. Der neue Datensatz enthält auch eine Variable namens one_N, die die Anzahl der Fälle angibt, die in jede der Kategorien von Geschlecht nach eth fallen (einschließlich einer Zählung von 0, wo dies angemessen ist).
proc print data=t;run;Obs gender eth NObs one_N 1 1 1 12 12 2 1 2 12 12 3 1 3 21 21 4 2 1 2 2 5 2 2 0 0 6 2 3 43 43
Nun können wir proc freq auf dem neuen Datensatz t ausführen. Die Gewichtungsanweisung verwendet one_N als die Variable, die die Anzahl der Fälle mit einem gegebenen Muster von Variablen enthält. Die Option /zeros weist SAS an, Fälle in die Liste aufzunehmen, in denen one_N = 0 ist. Die resultierende Liste enthält eine Zeile für die Kombination von Geschlecht und eth mit einer Null-Anzahl.
proc freq data = t; table gender*eth /list; weight one_N /zeros;run; The FREQ Procedure Cumulative Cumulativegender eth Frequency Percent Frequency Percent 1 1 12 13.33 12 13.33 1 2 12 13.33 24 26.67 1 3 21 23.33 45 50.00 2 1 2 2.22 47 52.22 2 2 0 0.00 47 52.22 2 3 43 47.78 90 100.00