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;
April 27 – 30 | Gaylord Texan | Grapevine, Texas
Walk in ready to learn. Walk out ready to deliver. This is the data and AI conference you can't afford to miss.
Register now and save with the early bird rate—just $795!
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.
Ready to level-up your skills? Choose your own adventure.