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().
Join us for SAS Innovate April 16-19 at the Aria in Las Vegas. Bring the team and save big with our group pricing for a limited time only.
Pre-conference courses and tutorials are filling up fast and are always a sellout. Register today to reserve your seat.
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.