BookmarkSubscribeRSS Feed
robertrao
Quartz | Level 8

I have a macrovariable

and i want to convert it to a numeric date and store it for the entire dataset

%let monthyear=Aug1999;

In the below the WANT table should have numeric AUG 1999

data want;

set have;

run;

Thanks

3 REPLIES 3
Astounding
PROC Star

There is no such thing as a single numeric value that corresponds to all of August 1999.  Numeric SAS dates correspond to a single day. 

You can save it as a character variable in this fashion:

monyr = "&monthyear";

Or you can save it as a numeric variable representing a particular day:

monyr = "01&monthyear"d;

If you prefer some other date other than the first of the month, that's obviously easy to change.

Good luck.

robertrao
Quartz | Level 8

I mean putting

8/1999

Astounding
PROC Star

OK, this code could be used:

num_date = "01&monthyear"d;

length char_date $ 7;

char_date = left(  put(month(num_date),2.) || '/' || put(year(num_date),4.)  );

My recommendation would be to alter the result slightly, using a leading zero for months prior to October:

char_date = put(month(num_date),z2.) || '/' || put(year(num_date),4.);

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
  • 3 replies
  • 1439 views
  • 0 likes
  • 2 in conversation