proc sort data=have;
by place name qty:;
run;
data have1;
retain id 0;
set have;
by place name;
if first.name then
id=1;
else id=id+1;
run;
data have2;
set have1;
array ar_name (*) Qty:;
do i=1 to dim(ar_name);
new_col=cat(vname(ar_name[i]),'_',name);
new_val=ar_name[i];
output; /*put new_col= new_val=;*/
end;
drop i QTY: name;
run;
proc sort data=have2;
by id new_col place;
run;
proc transpose data=have2 out=final(drop=id _NAME_);
id new_col;
by id place;
var new_val;
run;
... View more