Help using Base SAS procedures

Difference between two dates greater then 28

Reply
Frequent Contributor
Posts: 145

Difference between two dates greater then 28

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

Super User
Posts: 7,832

Re: Difference between two dates greater then 28

Posted in reply to rakeshvvv

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;

---------------------------------------------------------------------------------------------
Maxims of Maximally Efficient SAS Programmers
Ask a Question
Discussion stats
  • 1 reply
  • 156 views
  • 0 likes
  • 2 in conversation