如何读取多个特定数据集并附加到一个大数据集?
例如我在库中我有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)
在这种情况下,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的那么多次调用慢得多.
| 归档时间: |
|
| 查看次数: |
8623 次 |
| 最近记录: |