Macro für eine große Anzahl an Variablen aufrufen
Hallo,
ich glaube, es gab so eine ähnliche Frage schon mal. Ich kann das Ganze aber leider nicht mehr finden, deshalb frage ich jetzt nochmal.
Ich habe das folgende Macro:
%macro baum(datei,var1,var2);
%if &datei= %then %let datei=_last_;
proc freq data=&datei;
table &var1*&var2 /chisq;
output chisq;
run;
data dazu;
set _last_ (keep=_PCHI_ P_PCHI);
wert="&var1";
run;
data merken;
set merken dazu;
run;
%mend;
Dieses Macro soll nun nacheinander für 20 Variablen, die alle in ein und derselben Datei stehen, laufen. Nun kann man natürlich jeden Durchlauf einzeln aufrufen:
%baum(baum,visuscale,drpscale2);
%baum(baum,hba1c,drpscale2);
%baum(baum,ydiab,drpscale2);
%baum(baum,typdiab,drpscale2);
%baum(baum,hypscale,drpscale2);
%baum(baum,fette,drpscale2);
....
Das Ergebnis des Chiquadrat steht dann in der Datei merken:
_PCHI_ P_PCHI wert
144.306 3.0461E-33 ydiab
50.682 1.0862E-12 hba1c
27.674 .000000144 visuscale
20.867 .000004922 typdiab
14.127 .000170891 fette
So weit, so gut. Ich suche nun aber nach einer Möglichkeit, das Ganze in einem Aufruf hinzubekommen.
Weiß da jemand Rat? Wäre klasse!
VG Elfriede
- Anmelden oder Registrieren um Kommentare zu schreiben

Hallo
Hallo SAS_FIDI,
wahrscheinlich haben Sie die Idee schon probiert,
aber da die zweite Variable immer gleich ist müsste doch
proc freq data=&datei;
table (&var11 var12 ... var1n)*&var2 /chisq;
output chisq;
run;
funktionieren?
Ansonsten kann man beide Variablen als Liste übergeben und mit einer
%let i=1;
%let var1=%scan(&varlist1, &i);
%let var2=%scan(&varlist1, &i);
%do %while (&var1 ne);
...
%let i=%eval(&i+1);
%let var1=%scan(&varlist1, &i);
%let var2=%scan(&varlist1, &i);
%end;
do while -Schleife arbeiten
Grüße MK
Die erste Variante habe ich
Die erste Variante habe ich zwar ausprobiert, aber verworfen, da ich den Output dann nicht so hinbekommen habe, wie ich ihn brauche (siehe oben).
Die zweite Variante werde ich mal ausprobieren. Danke!
VG Elfriede
Ja, hat geklappt! Vielen
Ja, hat geklappt! Vielen Dank!
VG Elfriede