data Have; input ID TYPE : $1. ANSWER_1 ANSWER_2; datalines; 1 A 4 5 1 B 6 8 1 C 3 1 2 A 5 5 2 B 11 3 2 C 0 7 ; run; proc transpose data=have out=want; var ANSWER_1 ANSWER_2; id type; by id; run; Data a1 a2; set Want; if _name_='ANSWER_1' then output a1; else output a2; drop _name_; run; proc sort data=a1; by ID; ; run; proc sort data=a2; by ID; run; data Want; merge a1 a2 (rename=(A=A2 B=B2 C=C2)); by ID; run; **** Or: ***; data Want (keep=ID A1-A2 B1-B2 C1-C2); label ID='ID' A1='A-1' B1='B-1' C1='C-1' A2='A-2' B2='B-2' C2='C-2' ; array a{*} A1-A2; array b{*} B1-B2; array c{*} C1-C2; array val{*} ANSWER_1 ANSWER_2; do until(last.ID); set have; by ID; do i=1 to dim(val); If Type='A' then a{i}=val{i}; else If Type='B' then b{i}=val{i}; else If Type='C' then c{i}=val{i}; end; end; if last.ID then do; output; do i=1 to dim(val); a(i)=.; b(i)=.; c(i)=.; end; end; run;
... View more