I have dataset with three varaibles id startdate enddate. Dates are numerical sas formats.
I would like to pull out the records for id where the difference between the two succesive START dates is more then 28 days.
example:
ID STARTDATE ENDDATE
001 19583 19604
001 19589 19609
001 19600 19610
001 19628 19638
001 19480 19520
This looks like an appliaction for a dow loop:
data want (keep=id1 st1 enddate rename=(id1=id st1=startdate));
format id1 st1 enddate; /* just to keep the vars in order */
do until ((startdate - lastdate >= 28) or finish);
lastdate = startdate;
set have end=finish;
by id;
if first.id then lastdate = startdate;
end;
if startdate - lastdate >= 28
then do;
do until (lastdate = st1 and id = id1); /* read to the first record */
set have (rename=(id=id1 startdate=st1));
end;
output;
do until (startdate = st1 and id = id1); /* read to the second record */
set have (rename=(id=id1 startdate=st1));
end;
output;
end;
run;
Join us for SAS Innovate April 16-19 at the Aria in Las Vegas. Bring the team and save big with our group pricing for a limited time only.
Pre-conference courses and tutorials are filling up fast and are always a sellout. Register today to reserve your seat.
Learn the difference between classical and Bayesian statistical approaches and see a few PROC examples to perform Bayesian analysis in this video.
Find more tutorials on the SAS Users YouTube channel.