如何读取多个特定数据集并附加到一个大数据集?

Lor*_*bat 2 sas sas-macro

如何读取多个特定数据集并附加到一个大数据集?

例如我在库中我有100个数据集,但我只想附加有_du1,_du2的数据集

格式和列名称相同

我刺它不起作用:

PROC SQL NOPRINT;
SELECT memname INTO :tab1-:tab103 FROM sashelp.vtable
where memname like '_DU%';
SELECT count(*) INTO :obs FROM sashelp.vtable
where memname like '_DU%';
QUIT;

%macro rubber;
%do i=1 %to i=&obs;
proc append base=tot_comb data=&&tab&i force;
run;
%end;
%mend;

%rubber;
Run Code Online (Sandbox Code Playgroud)

Joe*_*Joe 5

在这种情况下,PROC APPEND实际上可能不会更快,或者至少不能更快地证明这样做,而不仅仅是编写一个datastep.

data tot_comb;
set work._DU:; *or your libname;
run;
Run Code Online (Sandbox Code Playgroud)

如果您使用的是SAS 9.2或更高版本,则可以使用此功能.如果您使用的是9.1或更早版本,则需要执行一个proc sql步骤,例如

proc sql;
select memname into :namelist separated by ' '
  from dictionary.columns
  where libname='WORK' /* or your libname */
  and memname eqt '_DU';
quit;
*eqt is like starts with;
data tot_comb;
set &namelist;
run;
Run Code Online (Sandbox Code Playgroud)

这只需要一次写入,我不确定它会比PROC APPEND的那么多次调用慢得多.