Proc Means und der Umgang mit der Type -Variablen in der Output-Anweisung

Aus SAS-Wiki
Wechseln zu: Navigation, Suche

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;