Hi all
I have a dataset like this
ID startdate enddate
AA. 01/01/2014 01/31/2014
AA. 02/01/2014 02/28/2014
AA. 03/01/2014 03/31/2014
AA. 09/01/2014. 09/30/2014
AA. 10/01/2014. 10/31/2014
AA. 11/01/2014. 11/30/2014
AA. 12/01/2014. 12/31/2014
I am evaluating continuous eligibility for patients in a dataset
I want the results like this
ID startdate enddate
AA. 01/01/2014 01/31/2014
AA. 09/01/2014 12/31/2014
how do i do this.
Thank you
Please explain in words (and also provide examples) of what is considered "continuous enrollment" and what is not considered "continuous enrollment". Why are January and February and March not considered "continuous enrollment"?
Are you sure that your "want" isn't more like:
ID startdate enddate AA. 01/01/2014 03/31/2014 AA. 09/01/2014 12/31/2014
If there are any other variables in the data set you need to tell us what to do with them.
You should provide example data as a working data step so we don't have to ask questions like are startdate and enddate actual date values with what appears to be the MMDDYY10 format assigned or are they character values?
@stellapersis7 wrote:
Hi all
I have a dataset like this
ID startdate enddate
AA. 01/01/2014 01/31/2014
AA. 02/01/2014 02/28/2014
AA. 03/01/2014 03/31/2014
AA. 09/01/2014. 09/30/2014
AA. 10/01/2014. 10/31/2014
AA. 11/01/2014. 11/30/2014
AA. 12/01/2014. 12/31/2014
I am evaluating continuous eligibility for patients in a dataset
I want the results like this
ID startdate enddate
AA. 01/01/2014 01/31/2014
AA. 09/01/2014 12/31/2014
how do i do this.
Thank you
So these are the variables, all the dates are in SAS dates. This is an example data set. so the patients start and end variables are first date and last date of respective month. CP variable is- if they are enrolled for that month, its coded as 1 and 0 if not enrolled. I need to combine all the months they are eligible into single start and end date. For example if a person is eligible from jan1 to april 1 and again between august first and dec 31, i need that to be captured in a seperate variables like new_start and new_end showing the 2 new start dates and end dates for each member id. if a person is continuously enrolled from jan to dec then he will have a single new_start as 01jan and new_end as 31dec.
Thank you
@stellapersis7 wrote:
Hi all
I have a dataset like this
ID startdate enddate
AA. 01/01/2014 01/31/2014
AA. 02/01/2014 02/28/2014
AA. 03/01/2014 03/31/2014
AA. 09/01/2014. 09/30/2014
AA. 10/01/2014. 10/31/2014
AA. 11/01/2014. 11/30/2014
AA. 12/01/2014. 12/31/2014
I am evaluating continuous eligibility for patients in a dataset
I want the results like this
ID startdate enddate
AA. 01/01/2014 01/31/2014
AA. 09/01/2014 12/31/2014
how do i do this.
Thank you
Assuming you really want enddate=03/31/2014 for the first observation in your expected output, then:
data want (drop=nxt_:);
merge have
have (firstobs=2 keep=id startdate rename=(id=nxt_id startdate=nxt_start));
retain new_start;
format new_start new_end mmddyy10. ;
if id^=lag(id) or startdate-1 > lag(enddate) then new_start=startdate;
if id^=nxt_id or enddate+1 < nxt_start;
new_end=enddate;
run;
This code compares the current start to the preceding end (and current ID to preceding ID), to establish whether a new continuous period is starting.
Then, using the firstobs=2 option in one of the MERGE datasets, it compares the current end to the next start, and current id vs next id, to establish whether the end of a continuous period has been reached.
The program is untested in the absence of sample data in the form of a working data step. It assumes that startdate and enddate are stored as SAS date values.
Registration is now open for SAS Innovate 2025 , our biggest and most exciting global event of the year! Join us in Orlando, FL, May 6-9.
Sign up by Dec. 31 to get the 2024 rate of just $495.
Register now!
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.
Ready to level-up your skills? Choose your own adventure.