|
data m;
input x y z j@;
cards;
1 2 3 2
2 3 4 3
1 2 3 4
8 1 6 5
2 3 4 6
1 2 3 4
9 5 6 5
4 2 6 6
7 5 6 5
2 3 7 6
9 5 6 5
1 0 7 6
8 3 6 5
;
run;
proc transpose data=m out=x;var _all_;run;
%let c=%sysfunc(open(x,i));%let n=%eval(%sysfunc(attrn(&c,nvars))-1);
data x1;set x;array x _char_ _name_ ;array z(*) col1-col&n;
do i=1 to dim(z);if z(i)=max(of col1-col&n) then c=i;end;
do i=1 to dim(z);if z(i)<max(of col1-col&n)&i<=c then z(i)=max(of col1-col&n);
end;drop i c;run;
proc transpose data=x1 out=final(drop=_name_);run;
|