當作為SAS程序運行時,此代碼可以正常執(zhí)行:%MyMacro(foo_val, bar_val, bat_val);我使用以下方法創(chuàng)建了一個表:DATA analyses; input title : $32. weight : $32. response : $32.; datalines;foo1 bar1 bat1foo2 bar2 bat2;我想對表的MyMacro每一行執(zhí)行一次analyses。下面的代碼似乎只傳遞字符串值title,weight和response(而不是數(shù)據(jù)值foo1等),以我的宏(通過調(diào)用測試%put命令):DATA _NULL_ ; set analyses; %MyMacro(title, weight, response);RUN;analyses在將數(shù)據(jù)值作為參數(shù)傳遞給宏時,如何在表的每個記錄中調(diào)用一次宏?目的是針對大量分析實際運行此操作,因此解決方案必須適當?shù)財U展到analyses表中的更多記錄。
3 回答

慕少森
TA貢獻2019條經(jīng)驗 獲得超9個贊
您可以將變量值放入宏變量,然后%MyMacro使用宏變量作為參數(shù)多次調(diào)用(數(shù)據(jù)集中的obs數(shù)):
資料:
DATA analyses;
input title : $32. weight : $32. response : $32.;
datalines;
foo1 bar1 bat1
foo2 bar2 bat2
;
run;
運行宏的代碼:
data _NULL_;
set analyses end=fine;
call symput("ARGUMENT"||compress(_N_),catx(",",title,weight,response));
if fine then call symput("NLOOPS",compress(_N_));
run;
%*PUT &ARGUMENT1;
%*PUT &ARGUMENT2;
%MACRO MAIN;
%DO L=1 %TO &NLOOPS;
%MyMacro(&&ARGUMENT&L);
%END;
%MEND;
%MAIN;
- 3 回答
- 0 關注
- 927 瀏覽
添加回答
舉報
0/150
提交
取消