Keep it simple:
data two;
set one;
array v var: ;
array x val: ;
obs = _n_;
do i = 1 to dim(v);
y = v{i};
z = x{i};
output;
end;
run;
proc sql noprint;
select unique y into :varList separated by " "
from two
order by y;
quit;
proc transpose data=two out=three(drop=obs _name_);
by obs var: val: ;
id y;
var z;
run;
data want;
if 0 then set three(keep=val: var:);
retain &varList;
set three;
run;
... View more