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

d. Sie benötigen 3 verschiedene Aufrufe:%plotte(1,sds=co.iris,y=pw,x=pl,z=blume);%plotte(2,sds=co.iris,y=pw,x=pl,z=blume);%plotte(3,sds=co.iris,y=pw,x=pl,z=blume);9. %macro kreuztab(zeile,spalte,sds=);proc freq data=&sds;tables &zeile*&spalte;run;%mend kreuztab;Für den zweiten Aufgabenteil benötigen Sie folgende Schritte:proc format ;value sl6.4-7.9='a'5.8-6.3='B'5.1-5.7='c'4.3-5.0='d';run;data iris;set co.iris;format sl:sl.;run;%kreuztab(sl,blume,sds=iris)10. id=global %let-Anweisung außerhalb eines Makrossds=lokalMakro-Schlüsselparameterort=lokal%let-Anweisung innerhalb eines Makrossysdate=global automatische Makrovariable12. %macro machdat(i,seedy,seedx,dateinam=);%global SDS;%let sds=&dateinam;data &sds;do i=1 to &i ;y=rannor(&seedy);x=rannor(&seedx);output;end;run;%prinsort;%mend machdat;%macro prinsort;proc sort data=&sds;by x;proc print data=&sds;run;%mend prinsort;Sie müssen die Variable sds nicht global definieren, da SAS standardmäßig den zuletzt benutztenDatensatz bearbeitet, und das Makro %prinsort den richtigen Datensatz findet.13. %macro nummer;%*Dieses Makro fragt danach, welchen Datensatz sie entweder mit derProzedur Print oder Means bearbeiten wollen.;%put Welchen Datensatz wollen Sie bearbeiten?;%input sds;%put Wählen Sie eine der drei Möglichkeiten:Ausdruck (geben sie eine 1 an)Mittelwerte ( geben sie eine 2 an);%input a;%*Falls a=1 ist, dann wird die Prozedur Print ausgeführt.;%if &a=1 %then%Do;58

Proc print data=&sds;run;%end;%* Falls a=2 ist, dann wird die Prozedur Means ausgeführt.;%else %do;Proc means data=&sds;run;%end;%mend nummer;14. %macro menue;%put Sie haben folgende Möglichkeiten:;%put;%put %str( 1. Patientenaufnahme);%put %str( 2. Löschen eines Patienten);%put %str( 3. Listenausdruck);%put %str( mit Sortierreihenfolge);%put %str( a. Familienname);%put %str( b. Wohnort);%put;%put %str( Treffen Sie Ihre Entscheidung: ___);%input entsch;%mend menue;15.%Macro prompt;%put Geben Sie den Namen ihres Datensatzes an;%input sds;%put Welche Prozedur wollen Sie damit Ausführen?;%input proz;Proc &Proz Data=&SDS;run;%Mend prompt;%prompt ;16. %window anfang color=white#11 @23 'Hallo, hier ist ihr SAS-System' c=red#13 @23 'Falls Sie die folgenden Libname-Anweisungen gesetzt habenwollen' c=red#15 @23 'geben Sie bitte eine 1 ein' color=red @53 wert 1 attr=underlinec=green#17 @27 'b=Laufwerk B'#18 @27 'a=Laufwerk A'#19 @27 'co=N:\sasurz\daten' ;%macro beginn;%display anfang delete;%if &wert=1 %then%do;libname b'B:\';libname a'A:\';libname co 'N:\sasurz\daten';%end;%mend beginn;17. %macro dateinam(sds=&syslast);%put Die Libref heißt: %scan(&sds,1,.);%put Die eigentliche Datei hat den Namen: %scan(&sds,2,.);%mend dateinam;18. %let name=holger geißler;%put Mein Name ist: %upcase(&name);%put Die Länge meines Namens ist %eval(%length(&name)-1) Buchstaben;19. Das Makro intsum sieht folgendermaßen aus:%macro intsum(n);%eval(&n*(&n+1)/2);%mend intsum;a) %let total=%intsum(10);59

Proc print data=&sds;run;%end;%* Falls a=2 ist, dann wird die Prozedur Means ausgeführt.;%else %do;Proc means data=&sds;run;%end;%mend nummer;14. %macro menue;%put Sie haben folgende Möglichkeiten:;%put;%put %str( 1. Patientenaufnahme);%put %str( 2. Löschen eines Patienten);%put %str( 3. Listenausdruck);%put %str( mit Sortierreihenfolge);%put %str( a. Familienname);%put %str( b. Wohnort);%put;%put %str( Treffen Sie Ihre Entscheidung: ___);%input entsch;%mend menue;15.%Macro prompt;%put Geben Sie den Namen ihres Datensatzes an;%input sds;%put Welche Prozedur wollen Sie damit Ausführen?;%input proz;Proc &Proz Data=&SDS;run;%Mend prompt;%prompt ;16. %window anfang color=white#11 @23 'Hallo, hier ist ihr <strong>SAS</strong>-System' c=red#13 @23 'Falls Sie die folgenden Libname-Anweisungen gesetzt habenwollen' c=red#15 @23 'geben Sie bitte eine 1 ein' color=red @53 wert 1 attr=underlinec=green#17 @27 'b=Laufwerk B'#18 @27 'a=Laufwerk A'#19 @27 'co=N:\sasurz\daten' ;%macro beginn;%display anfang delete;%if &wert=1 %then%do;libname b'B:\';libname a'A:\';libname co 'N:\sasurz\daten';%end;%mend beginn;17. %macro dateinam(sds=&syslast);%put Die Libref heißt: %scan(&sds,1,.);%put Die eigentliche Datei hat den Namen: %scan(&sds,2,.);%mend dateinam;18. %let name=holger geißler;%put Mein Name ist: %upcase(&name);%put Die Länge meines Namens ist %eval(%length(&name)-1) Buchstaben;19. Das <strong>Makro</strong> intsum sieht folgendermaßen aus:%macro intsum(n);%eval(&n*(&n+1)/2);%mend intsum;a) %let total=%intsum(10);59

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!