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

慕少森
TA貢獻2019條經驗 獲得超9個贊
您可以將變量值放入宏變量,然后%MyMacro使用宏變量作為參數多次調用(數據集中的obs數):
資料:
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 關注
- 916 瀏覽
添加回答
舉報
0/150
提交
取消