proc transpose data=aaa out=aaa1;
by var1;
var var2-var5;
run;
proc transpose data=aaa1(rename=(_name_=name)) out=aaa2;
by var1 name;
var col:;
run;
data aaa3;
set aaa2;
by var1 name;
if first.name then i=0;
else i+1;
if not first.name then name=catx("_",name,put(i,z2.));
if ^missing(col1);
run;
proc transpose data=aaa3 out=bbb;
by var1;
var col1;
id name;
run;