|
data b;
input group_all;
cards;
1
2
3
4
5
6
;
run;
data b;
set b;
code=compress('group'||ceil(group_all/3));
run;
proc sort data = Work.B nodupkey out = _PROJ_.SPLITED0 (keep=CODE);
by CODE;
run;
/***Assign values to macro variables***/
data _null_;
set _PROJ_.SPLITED0 end=eof;
newvar = compress(CODE);
call symput('col'||left(_n_),left(trim(newvar)));
call symput('value'||left(_n_),left(trim(CODE)));
if eof then call symput('num',_n_);
run;
/***Subset the data set by Split-by column***/
%macro subdata;
%* ;
%****Macro to subset a data set****;
%* ;
%do k=1 %to #
data temp&k (rename = (GROUP_ALL = &&col&k.&&k));
set Work.B;
if CODE = "&&value&k";
drop CODE;
run;
%end;
%mend;
/***Create a list of all temporary data sets***/
%macro filelist;
%* ;
%****Macro for listing temporary files****;
%* ;
%do n=1 %to #
temp&n
%end;
%mend;
%subdata
/***Merge all temporary data sets***/
data c;
merge %filelist;
run;
/***Delete temporary data sets in WORK library***/
proc datasets nolist;
delete %filelist;
run;
quit;
quit;
|