Creating so may variables from data is messy. You can use the PROC SUMMARY trick if you have LE 100 obs per ID. data have; format MRN 3. DxDt mmddyy10. Dx $2. TX $4. TxDate mmddyy10.; informat MRN 3. DxDt mmddyy10. Dx $2. TX $4. TxDate mmddyy10.; input MRN DxDt Dx $ TX $ TxDate; datalines; 1 1/15/2001 A Rad 2/1/2001 2 11/6/1999 A Sur 12/16/1999 2 7/11/2005 B Che 9/25/2005 1 4/2/2010 C Sur 6/8/2010 1 4/15/1989 D . . 3 9/17/2014 A Rad 9/20/2014 4 10/11/2007 B Che 11/1/2007 ; run; proc sort data=have; by mrn dxdt; run; %let obs=1; proc sql noprint; select max(obs) into :obs from (select count(*) as obs from have group by mrn); quit; run; proc summary data=have; by mrn; output out=wide(drop=_type_) idgroup(out[&obs](dxdt--txdate)=); run; proc print; run;
... View more