BookmarkSubscribeRSS Feed
brophymj
Quartz | Level 8

I am trying to change a date which is held in a string and of the format 01 DEC 2012 to a SAS date. Is this easy to do?

Also, I have a character field holding number which I would like to convert to number formats. i.e. 1,769 as a character field of length 10. 

3 REPLIES 3
RW9
Diamond | Level 26 RW9
Diamond | Level 26

Yes, input reads text and converts to numeric (dates and times are actually numbers), put does the reverse so:

data want;

     set have;

     new_date=input(compress(string_date),date9.);  /* Compress as you have blanks */
     new_num=input(text_num,best.);
     format new_date date9.;   /* apply format, otherwise you will see number of days since a date in the past */
run;
brophymj
Quartz | Level 8

Thanks rw9, that works for the dates. In the case of a the number it's not working. My number is currently a string of the form:

1,569

79

104

1,333

and so on. It's working for the numbers with commas but not the other ones.

RW9
Diamond | Level 26 RW9
Diamond | Level 26

Ah, you need to use the comma format then:

  new_num=input(text_num,comma8.);

All formats can be found in the online help:

SAS(R) 9.2 Language Reference: Dictionary, Fourth Edition

hackathon24-white-horiz.png

The 2025 SAS Hackathon has begun!

It's finally time to hack! Remember to visit the SAS Hacker's Hub regularly for news and updates.

Latest Updates

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
  • 1438 views
  • 0 likes
  • 2 in conversation