DATA Step, Macro, Functions and more

continuous period with a gap

New Contributor
Posts: 2

continuous period with a gap

I am looking for some help on creating a macro that will identify continuous enrollment with a given gap. For example, we will allow a month gap and still allow continuous enrollment. The data structure I have is....


Memb_id enroll_yrmo (number - not date) 

1 201701

1 201702

1 201703

1 201704

1 201705


1 201712


I have done this before but it was with from and thru dates with a single record per member. Now, I have a record for every month and it isn't even a date. It is a number. I would love your help and input. 


Super User
Posts: 6,636

Re: continuous period with a gap

Here's one approach, assuming your data set is already sorted:


data want;

set have;

by memb_id;

dif_date = dif(enroll_yrmo);

month = mod(enroll_yrmo, 100);

if first.memb_id then do;




if month > 1 and dif_date=1 then return;

if month=1 and dif_date=89 then return;

group + 1;



Since you described the result, but didn't illustrate it, here's what this is doing.  It assumes that a "gap" means that a year/month is missing from the sequence (for the same value of MEMB_ID).  It creates a new variable (GROUP) that is 1 for the first set of sequential observations, but increases whenever a gap is found.


Ask a Question
Discussion stats
  • 1 reply
  • 2 in conversation