Proc Means und der Umgang mit der Type -Variablen in der Output-Anweisung
Von Hans-Peter Altenburg aus: Hans-Peter Altenburg, Carina Ortseifen, Tanja Petrowitsch, Grischa Pfister, Wilfried Schollenberger: Tipps & Tricks für den leichteren Umgang mit der SAS Software, KSFE 2007
Die Speicherung von Kennzahlen in einer SAS-Datei unter Verwendung der Output-Anweisung in der Prozedur Means ist allgemein üblich. Vorsicht ist geboten, wenn an Stelle der By-Anweisung die Class-Anweisung verwendet wird. Verwendet man die By-Anweisung, so enthält die Output-Datei die gewünschten Kennzahlen für jede By-Kombination sowie die beiden Variablen _Freq_ (für die Anzahl der jeweiligen Kombination) und _Type_ mit dem Wert Null. Der Nachteil ist, dass die By-Anweisung eine sortierte Datei erwartet, was bei größeren Dateien für jede By-Kombination einen Aufruf zum Sortieren und einen Aufruf der Prozedur Means erfordert. Dagegen entfällt bei Verwendung der Class-Anweisung das vorherige Sortieren, und man braucht auch nur einmal die Prozedur Means aufzurufen um alle „Unter-„Kombinationen der Class-Liste zu erhalten. Die Output-Datei enthält jetzt die gewünschten Kennzahlen für alle möglichen Kombinationen der Class-Liste sowie die Class-Variablen, die Variable _Freq_ für die Anzahl dieser Kombination sowie die _Type_-Variable, die in binär verschlüsselter Form den Subset-Typ der Class-Liste enthält. Die Ausgabe-Datei enthält eine „vollständige Analyse“ (d.h. alle „Kombinationen“ bzgl. der Class-Variablenliste) der numerischen Analysevariablen. Bei zwei Class-Variablen kann die Variable _Type_ etwa folgende Ausprägungen annehmen:
_Type_ =0: Kennzahlen ohne Class-Variablen-Stratifizierung
_Type_ =1: Kennzahlen stratifiziert nach der ersten Class-Variablen
_Type_ =2: Kennzahlen stratifiziert nach der zweiten Class-Variablen
_Type_ =3: Kennzahlen stratifiziert nach allen Class-Variablen
Bei einer größeren Anzahl von Variablen in der Class-Liste gibt es entsprechend mehr Ausprägungen für die _Type_-Variable. Der Vorteil liegt darin, dass bei großen Datenmengen die Prozedur Means nicht mehrmals aufgeführt werden muss, wenn bestimmte Unterkombinationen auch gesucht sind. Bei mehreren Class-Variablen kann die gewünschte Kombination über eine binäre Abfrage der _Type_-Variablen ausgewählt werden.
Beispiel mit vier Stratifizierungsvariablen Eins, Zwei, Drei, Vier
- _TYPE_-Variable
Kombination: Binär Dezimal 0 (keine) 0000 0 Nur Eins 1000 8 Nur Vier 0001 1 Eins und Drei 1010 10 (=8+2) Zwei und Vier 0101 5(=5+1) … Alle 1111 15 (=8+4+2+1)
Mit Hilfe der Formatanweisung
Format _Type_ Binary4. ;
lassen sich die oben genannten Binär-Kombinationen darstellen. Den gleichen Effekt erreicht man, wenn man in der Proc Means-Anweisung die Option Chartype verwendet. Damit kann man auch in einer Where-Anweisung eine bestimmte Binär-Kombination abfragen.
Alternativen
Bestimmte Kombinationen der Class-Variablen auswählen kann man auch mit Hilfe der Types-Anweisung.
PROC MEANS DATA= ... ; CLASS eins zwei drei vier ; TYPES eins zwei drei vier ; ...
liefert die Kennzahlen für die einzelnen vier Statifizierungsvariablen. Types erlaubt auch andere Schreibweisen wie
TYPES eins*( zwei drei vier) ;
anstelle
TYPES eins*zwei eins*drei eins*vier ;
Eine weitere Alternative ist die Ways-Anweisung, um bestimmte Kombinationstiefen auszuwählen. So liefert z.B.
WAYS 2 ;
alle zweier Kombinationen,
TYPES eins*zwei eins*drei eins*vier zwei*drei zwei*vier drei*vier ;
oder
WAYS 3 ;
liefert alle Dreierkombinationen:
TYPES eins*zwei*drei eins*zwei*vier eins*drei*vier;