I couldn't help myself.
Here is a macro that will split the data set into a user specified number of data sets.
%macro split(dsn=, dsnroot=fred, splitcnt=3); %local i j; proc contents data=&dsn out=vlist(keep=name) noprint; run; proc sql noprint; select name into :vars1 - from vlist; %let vcnt = &sqlobs; quit; %* Nominal number of variables in each new dataset; %let cnteach = %sysevalf(&vcnt/&splitcnt,ceil); data %do i = 1 %to &splitcnt; &dsnroot&i(keep= %do j= %sysfunc(max(1,%eval((&i-1)*&cnteach+1))) %to %sysfunc(min(&vcnt,%eval((&i)*&cnteach))); &&vars&j %put &=i &=j; %end; ) %end; ; set &dsn; run; %mend split; %split(dsn=sashelp.shoes, dsnroot=want, splitcnt=2)
... View more