Ich möchte ein SAS-Makro verbessern, das einige Variablen durchläuft und Häufigkeitstabellen für sie druckt.SAS-Parameterliste
Hier ist der Arbeits Makro:
%macro iraCatFreq(IRACatsList);
%local i next;
%let i=1;
%do i=1 %to %sysfunc(countw(&IRACatsList));
%let next=%scan(&IRACatsList,&i);
proc freq data=out.SCF16_Cath;
weight WGT;
by ANYPEN;
tables &next;
format rRothContrBin allBinaries_format.;
run;
%end;
%mend iraCatFreq;
%iraCatFrew(rRothContrBin sRothContrBin oRothContrBin rRegContrBin sRegContrBin oRegContrBin);
ich dieses Makro durch Ersetzen der Parameterliste von Variablennamen (rRothContrBin sRothContrBin oRothContrBin rRegContrBin sRegContrBin oRegContrBin) mit einem einzigen Parameter verbessern wollte.
Hier ist der Ansatz, den ich zusammengeschustert:
/*Create a table of variable names for IRA types and owners*/
data IRACats;
infile datalines;
length x $ 17;
input x $;
datalines;
rRothContrBin
sRothContrBin
oRothContrBin
rRegContrBin
sRegContrBin
oRegContrBin
;
/*Convert table of strings into a macro variable, &IRACatsList */
proc sql noprint;
select x into :IRACatsList separated by ' '
from IRACats;
quit;
%put IRACatsList = &IRACatsList;
Ich habe versucht, das Makro ausgeführt wird nach diesem Ansatz laufen,
%iraCatFreq(&IRACatsList);
Es funktioniert, aber gibt es einen besseren Weg, dies ohne die Daten zu tun und proc sql Schritte?
Gibt es einen Grund, warum Sie nicht nur all diese Variablen zu einer einzigen 'Tabellen setzen 'Aussage innerhalb von proc freq? – user667489
Ich verstehe die Frage nicht. Ihr Makro nimmt bereits einen einzelnen Parameter an, der eine Liste von Werten akzeptiert. Was willst du ändern? – Tom
Uh ... Ich habe es vergessen. – AwfulPersimmon