我有超过 20 万个具有相同变量(n<1000,通常是 n<100)的小数据集,我想将它们连接到主数据集中。我尝试使用一个宏,它使用一个数据步骤来遍历所有新数据集,并使用“set master new:”与主数据集连接,但这需要很长时间。此外,如果我尝试同时运行,调用执行数据步骤会说我在一个巨大的服务器机器上内存不足。作为参考,所有小数据集加起来刚刚超过 5 Gigs。任何建议将不胜感激。这是我到目前为止所拥有的:
%macro catDat(name, nbr) ;
/*call in new dataset */
data new ;
set libin.&name ;
run ;
/* reorder names */
proc sql noprint;
create table new as
select var1, var2, var3
from new;
quit;
%if &nbr = 1 %then %do ;
data master;
set new;
run;
%end;
%if &nbr > 1 %then %do ;
data master;
set master new ;
run;
%end ;
%mend;
/* concatenate datasets */
data runthis ;
set datasetNames ;
call execute('%catdat('||datasetname||','||_n_||')');
run;
已解决:请参阅下面 Bob 的评论。