Frits Verstraten
Frits Verstraten

Reputation: 2179

Classify records based on a date

I have the following dataset:

DATA survey; 
informat order_date date9. ;
  INPUT id order_date ; 
   DATALINES; 
   1 11SEPT20016 
   2 12AUG2016
   3 14JAN2016
 ;
 RUN; 

 PROC PRINT data = survey; 
   format order_date date9.;
 RUN; 

What I would like to do now is classify the records based on their last visit. So what I want to do is:

Any thoughts on how I need to program this?

Upvotes: 0

Views: 35

Answers (1)

kl78
kl78

Reputation: 1666

You could build something like this (count the days between the dates, divide them by 30 and ceil them). Alternativly, if you want to use months and not 30 days, you can replace the first intck parameter with 'month' and remove the ceil and /30:

DATA survey; 
informat order_date date9. ;
  INPUT id order_date ; 
   DATALINES; 
   1 11SEP2016 
   2 12AUG2016
   3 14JAN2016
   4 09SEP2016 
   5 10AUG2016 
 ;
 RUN; 

 %let lastvisit=10SEP2016;

data result;
set survey;
days_30=ceil(intck('days', order_date,"&lastvisit"d)/30)-1;
run;

 PROC PRINT data = result; 
   format order_date date9.;

 RUN; 

Upvotes: 1

Related Questions