Hello..
Quick Example:
Date A = 31Dec2012
Date B = 12Dec2012
Then I want to know which nth Weekday Date A is since Date B
In this example Date A would be the 3rd Monday since Date B.
Is there anyway to calculate this automatically? Output like 3-2 (3rd-Monday)
Regards,
Raphael
DATA _NULL_;
DATEA='31DEC2012'D;
DATEB='12DEC2012'D;
VAR=COMPRESS(INTCK('WEEK', DATEB, DATEA)||"-"||WEEKDAY(DATEA));
PUT VAR;
RUN;
You may be able to accomplish this using a combination of INTCK which returns intervals between SAS date values such as weeks, and the WEEKDAY function which will return day of the week of a SAS date value. Check the online help for syntax, intervals supported and starts (not everyone considers the week to start on the same day).
It doesn't matter in this situation on which day the week starts. "Check online help"-Answers are useless. Thanks anyway.
Check out the below code and see if it works for you.
data one;
length output $10;
date_a = '31Dec2012'd;
date_b = '12Dec2012'd;
weeka = week(date_a,'u');
weekdaya = weekday(date_a);
weekb = week(date_b,'u');
output = strip(put(weeka-weekb,best.))||'-'||strip(put(weekdaya,best.));
format date_a date_b date9.;
run;
Bit complicated :smileysilly:
Will post my solution.. Bit smaller.. But thanks
DATA _NULL_;
DATEA='31DEC2012'D;
DATEB='12DEC2012'D;
VAR=COMPRESS(INTCK('WEEK', DATEB, DATEA)||"-"||WEEKDAY(DATEA));
PUT VAR;
RUN;
Don't feed the trolls...
Available on demand!
Missed SAS Innovate Las Vegas? Watch all the action for free! View the keynotes, general sessions and 22 breakouts on demand.
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.