data have;
input id date : yymmdd10. drug_dose indicator;
format date yymmdd10.;
datalines;
1 2008-01-17 7.5 0
1 2008-01-18 14.7 0
1 2008-01-19 21.5 0
1 2008-01-20 27.3 0
1 2008-01-21 32.1 0
1 2008-01-22 35.9 0
1 2008-01-23 38.6 0
1 2008-01-24 40.6 0
1 2008-01-25 41.8 0
1 2008-01-26 42.6 0
1 2008-02-06 0.0 1
1 2008-03-01 129.4 0
1 2008-03-02 107.7 0
1 2008-03-03 86.2 0
1 2008-03-04 34.4 0
1 2008-03-05 9.1 0
1 2008-03-19 0.0 1
;
data have;
set have;
by id;
if first.id or (indicator=0 and lag(indicator)=1) then group+1;
run;
proc sql;
select id,min(date) as start format=yymmdd10.,max(date) as stop format=yymmdd10.,
sum(drug_dose) as sum,
calculated sum/(calculated stop-calculated start) as ratio
from have
group by id,group;
quit;
... View more