如何解决在循环中为多个参数运行 sas 程序
对 sas 非常新,需要为称为 data1、data2、data3 ... data10 的许多数据集执行导出过程。 有没有办法操作这个?我试过以下没有成功
LIBNAME input '/home/.../input';
LIBNAME output '/home/.../output';
%macro anynumber(number);
proc export data=input.data&number file="/home/.../output/data&number..dta" dbms=dta replace;
run;
%mend;
do i = 1 to 10;
%anynumber(i)
end;
run;
解决方法
CALL EXECUTE 是推荐的选项,但宏循环也是一个不错的选择。 您也可以在同一个宏中循环它。所有选项如下图所示。
通常当我看到这种类型的编码时,我的第一个想法是有人不熟悉 BY 组处理。
data demo;
do i=1 to 10;
*make sure this string matches macro call;
str = catt('%anynumber(',i,');');
*write records to log to check;
put str;
call execute(str);
end;
run;
另一种选择是宏循环本身。
%macro loop_export(numLoops=10);
%do i=1 %to &numLoops;
%anywhere(&i);
%end;
%mend;
%loop_export(numLoops=10);
将它们放在一起:
%macro anynumber(number);
%do i=1 %to &number;
proc export data=input.data&number file="/home/.../output/data&i..dta" dbms=dta
replace;
run;
%end;
%mend;
*will export all 10;
%anyNumber(10);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。