data have; infile cards missover delimiter=',' ; input id $1. (date1-date3)( :$4.) dosage1 dosage2 dosage3; cards; 1, 1/2, 1/5, , 10, 20, . 2, 1/10, , , 30, ., . 3, 1/2, 1/5, 1/31, 10, 20, 30 4 ; run; data want(keep=id cum: ); set have; array ds(31); array cum_dose(31); array dates(*) date:; array dosages(*) dosage:; do i=1 to 31; ds(i)=0 ; cum_dose(i)=0; end; do i=1 to dim(dates); j=input(scan(dates(i),2),2.); if j then ds(J)=dosages(i); end; cum_dose(1)=ds(1); do i=2 to 31; cum_dose(i)=cum_dose(i-1)+ds(i); end; run;
... View more