我有一个大型 sas 数据集(1.5m obs,~250 个变量),我需要将其拆分为几个大小相等的较小 sas 数据集以进行批处理。每个数据集需要包含所有变量,但仅包含一部分观测值。最快的方法是什么?
您可以执行以下操作:
%macro splitds(inlib=,inds=,splitnum=,outid=);
proc sql noprint;
select nobs into :nobs
from sashelp.vtable
where libname=upcase("&inlib") and memname=upcase("&inds");
quit;
%put Number of observations in &inlib..&inds.: &nobs;
data %do i=1 %to &splitnum.;
&outid.&i
%end;;
set &inds.;
%do j=1 %to (&splitnum.-1);
%if &j.=1 %then %do;
if
%end;
%else %do;
else if
%end;
_n_<=((&nobs./&splitnum.)*&j.) then output &outid.&j.;
%end;
else output &outid.&splitnum.;
run;
%mend;
将 MYLIB.MYDATA 拆分为 10 个名为 NEWDATA1 - NEWDATA10 的数据集的示例调用如下:
%splitds(inlib=mylib,inds=mydata,splitnum=10,outid=newdata);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)