output-
pt element Start_date end_date
101 screening 2017-02-10 2017-02-24
101 randomization 2017-02-24 2017-03-05
101 treatment 2017-03-05 2017-09 -23
101 followup 2017-09-23 2017-02-12
102 screening 2017-02-12 2017-02-22
102 randomization 2017-02-22 2017-03-10
102 treatment 2017-03-10 2017-09-20
102 followup 2017-09-20 2017-09-20
data raw (rename= (visit= ELEMENT));
input pt visit$9. STDT: is8601da.;
format STDT is8601da.;
datalines;
101 screening 2017-02-10
101 randomization 2017-02-24
101 treatment 2017-03-05
101 followup 2017-09-23
102 screening 2017-02-12
102 randomization 2017-02-22
102 treatment 2017-03-10
102 followup 2017-09-20
run;
I think this is what you want
data raw (rename= (visit= ELEMENT));
input pt visit :$13. STDT: is8601da.;
format STDT is8601da.;
datalines;
101 screening 2017-02-10
101 randomization 2017-02-24
101 treatment 2017-03-05
101 followup 2017-09-23
102 screening 2017-02-12
102 randomization 2017-02-22
102 treatment 2017-03-10
102 followup 2017-09-20
run;
data want;
merge raw(rename=STDT=start_date) raw(firstobs=2 rename=STDT=end_date keep=STDT);
if ELEMENT='followup' then end_date=start_date;
run;
Are you sure this is the output you want? As I see it, you fetch the Start_Date of the screening for pt 102 as the end_date for the followup for pt 101? I don't think this is desirable?
I think this is what you want
data raw (rename= (visit= ELEMENT));
input pt visit :$13. STDT: is8601da.;
format STDT is8601da.;
datalines;
101 screening 2017-02-10
101 randomization 2017-02-24
101 treatment 2017-03-05
101 followup 2017-09-23
102 screening 2017-02-12
102 randomization 2017-02-22
102 treatment 2017-03-10
102 followup 2017-09-20
run;
data want;
merge raw(rename=STDT=start_date) raw(firstobs=2 rename=STDT=end_date keep=STDT);
if ELEMENT='followup' then end_date=start_date;
run;
Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 25. Read more here about why you should contribute and what is in it for you!
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.