Я использую макрос, найденный в Интернете, для импорта нескольких файлов 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);
Я написал цикл do внутри call execute
и запустил небольшой шаг данных после proc import
, но перед proc append
. но это не работает. Может ли кто-нибудь понять, как добавить эту переменную перед добавлением наборов данных. Заранее большое спасибо.