Automatisches Ermitteln der Achsenbeschriftung
Von Heribert Ramroth: Carina Ortseifen, Grischa Pfister, Heribert Ramroth, Marianne Weires: Tipps und Tricks für den leichteren Umgang mit der SAS Software, KSFE 2009
Stellen Sie sich folgende Datensituation vor: Sie wollen prozentuale Verkaufszahlen / Krankheitshäufigkeiten in mehreren vergleichbaren Situationen abbilden, um die Ergebnisse visuell zu vergleichen.
Ein Beispiel:
- Häufigkeitsverteilungen (prozentual)
- 4 Quartale
- 3 Städte
Idee:
- Visuelles Erkennen der Unterschiede in den Quartalen
- Automatisches Ermitteln der Ausprägungen der Städte („City“, X-Achse)
Der letzte Punkt ist insbesondere dann wichtig, wenn dieses Vorgehen auf viele unterschiedliche Variablen angewendet werden soll, ohne deren midpoints jeweils manuell zu ermitteln.
Der Beispieldatensatz:
data Bsp; input Quartal $3. @5 City$2. @8 value 2.; datalines; I HD 75 I MA 50 II MA 25 II LU 75 III HD 25 III MA 50 III LU 25 IV LU 50 ; run;
Das Problem: Der Standard SAS/GRAPH Code stellt nur 2 unzureichende Möglichkeiten zur Verfügung, die im Folgenden dargestellt werden:
1) by:
proc gchart data=bsp; vbar city/ patternid= midpoint; by Quartal ; run; quit;
2) Option group:
proc gchart data=bsp; vbar city/ patternid= midpoint group= Quartal; by Quartal ; run; quit;
Die Lösung nach manueller Ermittlung der Ausprägungen der Variablen City lautet wie folgt:
proc gchart data=bsp; vbar city / patternid= midpoint midpoints= "HD" "LU" "MA"; run; quit;
Frage: Wie kommen alle Ausprägungen/Kategorien der Variablen City ins midpoints statement, ohne sie manuell erst zu ermitteln und anschließend ins midpoints statement reinzuschreiben?
Die Makro-Lösung: Man ermittelt alle Ausprägungen „automatisch“.
Der zugehörige Makro-Code lautet wie folgt:
%Macro GetGroups(table= ,var= ,mvar= ); /* table Name der Quelle (Lib.Tab) var Name der Variable, deren Ausprägungen ermittelt werden mvar Name der Makrovariable, in die das Ergebnis gespeichert wird */ %Global &mvar; /* Abfrage der distinkten Ausprägungen */ Proc Sql Noprint; Select Distinct &var Into :&mvar Separated By ' " " ' From &table; Quit; /* führendes und schließendes Anführungszeichen */ %Let &mvar = "&&&mvar"; %Mend; %GetGroups(table=bsp, var=City, mvar=gr); axis1 order=(0 to 100 by 25) label=("%"); axis2 label=(""); proc gchart data=bsp; vbar city/ freq= value raxis= axis1 maxis= axis2 patternid= midpoint midpoints = &gr. ; run; quit;
Literatur
- SAS Institute Inc., 2004. SAS® 9.1 SQL Procedure User’s Guide. Cary, NC: SAS Institute Inc.