SAS-Makro-Programmierung: - Urz

SAS-Makro-Programmierung: - Urz SAS-Makro-Programmierung: - Urz

web.urz.uni.heidelberg.de
von web.urz.uni.heidelberg.de Mehr von diesem Publisher
12.07.2015 Aufrufe

Fehlermeldung zu vermeiden, muß anstelle eines Wertes für var2 ein Komma angegeben werden.Durch das Komma überspringt der Makro-Prozessor diesen Wert, und erkennt die nachfolgendenVariablen richtig.Probieren Sie aus, was passiert, wenn sie bei Aufruf 2 das Komma weglassen.Übungsaufgaben5. Welcher SAS-Code wird mit folgendem Makro erzeugt:%macro meintitl;title "Heute ist &sysday, &sysdate";%mend meintitl;Wie lautet der Aufruf dieses Makros?6. Schreiben Sie ein Makro %sortier, das die Proc Sort aufruft. Übergeben Sie dieInformationen über den zu bearbeitenden Datensatz und die by-Variable überPositionsparameter.7. Fügen Sie in das Makro %Sortier folgende Ergänzungen ein:• die Prozedur Print zur Kontrolle und• eine Titel-Zeile mit dem aktuellen Datum.8. Schreiben Sie ein Makro %Plotte, das die Prozedur Gplot aufruft. Das Makro sollte 3Schlüsselparameter haben:• Name der zu verwendenden SAS-Datei,• Name der Variable, die auf der x-Achse aufgetragen wird und• Name der Variable, die auf der y-Achse aufgetragen wird,a. Ergänzen Sie das Makro um eine dritte Variable z, die als Gruppierungsvariable fungieren soll.(plot x*y=z).b. Bearbeiten Sie mit dem Makro den Beispieldatensatz IRIS, den sie im Verzeichnis'N:\SASURZ\DATEN' finden. Plotten sie PL gegen PW, mit der Variable BLUME alsGruppierungsvariable.c. Fügen Sie eine where-Anweisung für die Variable z ein, und übergeben Sie dieEinschränkungsbedingung als Positionsparameter.d. Fertigen Sie sich für jede der drei Blumenarten ein eigenes Schaubild an.9. Schreiben Sie ein Makro KREUZTAB, das die Prozedur FREQ aufruft. Das Makro sollte dreiParameter haben: Zwei Positionsparameter für die Variablen in den Zeilen und den Spalten undein Schlüsselparameter für den Namen des SAS-Datensatzes.Klassifizieren Sie die Variable SL so, daß vier etwa gleichgroße Gruppen entstehen. Dazumüssen sie sich ein Format definieren. Erzeugen Sie danach eine temporäre Datei IRIS, in der siedas Format zuweisen. Rufen Sie das Makro für die temporäre Datei IRIS auf und tragen Sie dieklassifizierte Variable SL gegen BLUME auf. (Tip: Quartil-Bildung mit PROC UNIVARIATE,Klassifizierung mit PROC FORMAT.)14

4. Lokale und globale MakrovariablenDas SAS-System unterscheidet zwischen• globalen und• lokalen Makrovariablen.Die globalen Makrovariablen gelten während der gesamten SAS-Sitzung und können an beliebigerStelle verwendet werden, sobald sie definiert wurden. Globale Variablen sind z.B. die unter Kap.2.1 beschriebenen automatischen Makrovariablen wie &sysdate oder &systime.Im Unterschied dazu gelten die lokalen Makrovariablen nur in der Umgebung, die während einesMakroaufrufs angelegt wird. Diese Variablen sind daher nur innerhalb des Makros oder innerhalbdarin verschachtelter Makros verfügbar.Die Werte der Makrovariablen werden in Symboltabellenabgelegt: die Werte der globalen Variablenin einer einzigen globalen Tabelle, die Werte der lokalen Variablen in jeweils eigenen lokalenSymboltabellen.4.1 Erzeugung von lokalen und globalen MakrovariablenMakrovariablen können auf verschiedene Weise erzeugt werden:• vom SAS-System (automatische Variablen, Kap.2.1),• mit der Symput-Routine (siehe Kap. 7.1.2),• durch die Parameter beim Makro-Aufruf (siehe Kap. 3.3),• mit der %input-Anweisung (siehe Kap. 5.3),• mit der %let-Anweisung (siehe Kap. 2.2),• mit der %global-Anweisung (siehe Kap. 4.1.1),• mit der %local-Anweisung (siehe Kap. 4.1.2).Die Stelle, an der die Variable erzeugt wird, entscheidet, ob die Variable global oder lokal ist:wie wo wasautomatisch beim SAS-Aufruf global (immer)%let-Anweisung außerhalb eines Makros global (aktuelle Sitzung)%let-Anweisung innerhalb eines Makros lokalMakro-Parameter Parameterliste beim Aufruf lokal%input-Anweisung innerhalb und außerhalb von global (aktuelle Sitzung)Makrossymput-Routine innerhalb und außerhalb von global (aktuelle Sitzung)Makros%global-Anweisung innerhalb und außerhalb von global (aktuelle Sitzung)Makros%local-Anweisung innerhalb eines Makros lokalBeispiel:%let name=WILHELM;%macro chameleo;%let name=HANS;%put &name;%mend chameleo;15

Fehlermeldung zu vermeiden, muß anstelle eines Wertes für var2 ein Komma angegeben werden.Durch das Komma überspringt der <strong>Makro</strong>-Prozessor diesen Wert, und erkennt die nachfolgendenVariablen richtig.Probieren Sie aus, was passiert, wenn sie bei Aufruf 2 das Komma weglassen.Übungsaufgaben5. Welcher <strong>SAS</strong>-Code wird mit folgendem <strong>Makro</strong> erzeugt:%macro meintitl;title "Heute ist &sysday, &sysdate";%mend meintitl;Wie lautet der Aufruf dieses <strong>Makro</strong>s?6. Schreiben Sie ein <strong>Makro</strong> %sortier, das die Proc Sort aufruft. Übergeben Sie dieInformationen über den zu bearbeitenden Datensatz und die by-Variable überPositionsparameter.7. Fügen Sie in das <strong>Makro</strong> %Sortier folgende Ergänzungen ein:• die Prozedur Print zur Kontrolle und• eine Titel-Zeile mit dem aktuellen Datum.8. Schreiben Sie ein <strong>Makro</strong> %Plotte, das die Prozedur Gplot aufruft. Das <strong>Makro</strong> sollte 3Schlüsselparameter haben:• Name der zu verwendenden <strong>SAS</strong>-Datei,• Name der Variable, die auf der x-Achse aufgetragen wird und• Name der Variable, die auf der y-Achse aufgetragen wird,a. Ergänzen Sie das <strong>Makro</strong> um eine dritte Variable z, die als Gruppierungsvariable fungieren soll.(plot x*y=z).b. Bearbeiten Sie mit dem <strong>Makro</strong> den Beispieldatensatz IRIS, den sie im Verzeichnis'N:\<strong>SAS</strong>URZ\DATEN' finden. Plotten sie PL gegen PW, mit der Variable BLUME alsGruppierungsvariable.c. Fügen Sie eine where-Anweisung für die Variable z ein, und übergeben Sie dieEinschränkungsbedingung als Positionsparameter.d. Fertigen Sie sich für jede der drei Blumenarten ein eigenes Schaubild an.9. Schreiben Sie ein <strong>Makro</strong> KREUZTAB, das die Prozedur FREQ aufruft. Das <strong>Makro</strong> sollte dreiParameter haben: Zwei Positionsparameter für die Variablen in den Zeilen und den Spalten undein Schlüsselparameter für den Namen des <strong>SAS</strong>-Datensatzes.Klassifizieren Sie die Variable SL so, daß vier etwa gleichgroße Gruppen entstehen. Dazumüssen sie sich ein Format definieren. Erzeugen Sie danach eine temporäre Datei IRIS, in der siedas Format zuweisen. Rufen Sie das <strong>Makro</strong> für die temporäre Datei IRIS auf und tragen Sie dieklassifizierte Variable SL gegen BLUME auf. (Tip: Quartil-Bildung mit PROC UNIVARIATE,Klassifizierung mit PROC FORMAT.)14

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!