【发布时间】:2016-12-07 04:15:53
【问题描述】:
我正在使用在线找到的宏将多个 excel 文件导入单个 sas 数据集。而且效果很好。但我还想添加一个变量“plate”来指定每个excel文件。这是宏:
%macro MultImp(dir=,range=,out=,n=);
%let rc=%str(%'dir %")&dir.%str(\%" /A-D/B/ON%');
filename myfiles pipe %unquote(&rc);
data list;
length fname $256.;
infile myfiles truncover;
input myfiles $100.;
fname=quote(upcase(cats("&dir",'\',myfiles)));
out="&out";
drop myfiles;
call execute('
%do i=1 %to &n.;
proc import dbms=xlsx out= _test
datafile= '||fname||' replace ;
range="&range";
run;
data _test;
set _test;
plate=&i;
run;
proc append data=_test base='||out||' force; run;
proc delete data=_test; run;
%end;
');
run;
filename myfiles clear;
%mend;
%MultImp(dir=U:\test,range=summary$.D10:Y200,out=test,n=30);
我在call execute 内部编写了一个do 循环,并在proc import 之后、proc append 之前运行一个小数据步骤。但它不起作用。任何人都可以知道如何在附加数据集之前添加此变量。
非常感谢您。
【问题讨论】: