当作为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 关注
- 855 浏览
添加回答
举报
0/150
提交
取消