I have a zip code variable in a dataset that includes both 5- and 9-digit zip codes. I want all of them to be 5-digits but am having trouble extracting the first 5 digits of the variable. It is an extensive list, but some examples are 15009, 15208, 191451652, 193760024.
When I try to use substr,
data cases; set cases;
zip=substr(zip_char,1,5);
run;
it seems to truncate the zip codes that are already 5 characters long to "1". Any thoughts on how to avoid this?
This would happen if ZIP_CHAR is not left-hand justified. Luckily, it's easy to left-hand justify:
length zip $ 5;
zip = left(zip_char);
SUBSTR isn't really needed, once you have assigned a length to the new variable.
This would happen if ZIP_CHAR is not left-hand justified. Luckily, it's easy to left-hand justify:
length zip $ 5;
zip = left(zip_char);
SUBSTR isn't really needed, once you have assigned a length to the new variable.
If zip_char has leading blanks this might be the cause. Use the strip() function to get rid of blanks before applying substr().
April 27 – 30 | Gaylord Texan | Grapevine, Texas
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 lock in 2025 pricing—just $495!
Still thinking about your presentation idea? The submission deadline has been extended to Friday, Nov. 14, at 11:59 p.m. ET.
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.
Ready to level-up your skills? Choose your own adventure.