BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
brophymj
Quartz | Level 8

I'm trying to create a macro that creates a table showing the last Friday of every month. The table will look like this:

So, if i select a range of years, say 2001 to 2013 it will create a table like this:

YEARMONTHLASTFRIDAY
20130222
20130329
20130426
201305...
201306...
201307...
201308...
......
......

including all the years in the range I specify.

1 ACCEPTED SOLUTION

Accepted Solutions
data_null__
Jade | Level 19

This seem reasonable, I always have to experiment with shifted intervals a bit before I can figure it.   Find the last day of the month then find the first day of the week that "begins" on Friday "WEEK.6".

data friday;
   do year=2001 to 2013;
     
do month = 1 to 12;
         b = mdy(month,
1,year);
         e = intnx('Month',b,0,'E');
         f = intnx('week.6',e,0,'B');
         output;
        
end;
     
end;
  
format b e f weekdate.;
  
run;
proc print;
  
run;

8-1-2014 7-03-00 AM.png

View solution in original post

4 REPLIES 4
RW9
Diamond | Level 26 RW9
Diamond | Level 26

Hi,


You would be best served using the interval functions an example is here:

SAS/ETS(R) 9.2 User's Guide

data_null__
Jade | Level 19

This seem reasonable, I always have to experiment with shifted intervals a bit before I can figure it.   Find the last day of the month then find the first day of the week that "begins" on Friday "WEEK.6".

data friday;
   do year=2001 to 2013;
     
do month = 1 to 12;
         b = mdy(month,
1,year);
         e = intnx('Month',b,0,'E');
         f = intnx('week.6',e,0,'B');
         output;
        
end;
     
end;
  
format b e f weekdate.;
  
run;
proc print;
  
run;

8-1-2014 7-03-00 AM.png
cov_derek
Fluorite | Level 6

data _null_, shifted intervals are easy if you remember that interval.1 is the same as interval. It only gets complicated when you have large multipliers.

Ksharp
Super User

NULL,

Don't forget function  nwkdom( ) .

data friday;
   do year=2001 to 2013; 
      do month = 1 to 12; 
           date=nwkdom(5,6,month,year);
           output; 
         end; 
      end; 
   format date weekdate.; 
   run; 


Xia Keshan

sas-innovate-2026-white.png



April 27 – 30 | Gaylord Texan | Grapevine, Texas

Registration is open

Walk in ready to learn. Walk out ready to deliver. This is the data and AI conference you can't afford to miss.
Register now and save with the early bird rate—just $795!

Register now

What is Bayesian Analysis?

Learn the difference between classical and Bayesian statistical approaches and see a few PROC examples to perform Bayesian analysis in this video.

Find more tutorials on the SAS Users YouTube channel.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 4 replies
  • 6637 views
  • 6 likes
  • 5 in conversation