* * read the cgd data * ; libname save 'sasdata'; data gamma; infile '../../../data/cgd.data' missover; input id 1-3 center 5-7 +1 random mmddyy6. rx 2. sex 2. age 3. height 6.1 weight 6.1 inherit 2. steroids 2. propylac 2. hos_cat 2. futime 4. (event1-event7) (7*4.); data temp1; set gamma; *counting process data set; drop event1-event7 futime; tstart = 0; enum = 1; if (event1 NE .) then do; tstop = event1; status = 1; output; tstart = tstop; enum = enum +1; end; if (event2 NE .) then do; tstop = event2; status =1; output; tstart = tstop; enum = enum +1; end; if (event3 NE .) then do; tstop = event3; status =1; output; tstart = tstop; enum = enum +1; end; if (event4 NE .) then do; tstop = event4; status =1; output; tstart = tstop; enum = enum +1; end; if (event5 NE .) then do; tstop = event5; status =1; output; tstart = tstop; enum = enum +1; end; if (event6 NE .) then do; tstop = event6; status =1; output; tstart = tstop; enum = enum +1; end; if (event7 NE .) then do; tstop = event7; status =1; output; tstart = tstop; enum = enum +1; end; if (futime > tstart) then do; tstop = futime; status =0; output; end; data save.cgd1; set temp1; rx1 = rx * (enum=1); rx2 = rx * (enum=2); rx3 = rx * (enum>2); proc print; * make the WLW style data set; data save.cgd2; set gamma; drop event1-event7 futime; array event event1-event7; do i=1 to 7; if (event(i) = .) then do; time = futime; status =0; end; else do; time = event(i); status =1; end; enum =i; if (enum=1) then rx1=rx; else rx1=0; if (enum=2) then rx2=rx; else rx2=0; if (enum>2) then rx3=rx; else rx3=0; output; end;