Hi, I'm trying to find if there is a space after the last 3 digits then it's a canadian address otherwise it's US.
field
23 Yonge st. M4H 6F7
23 Yonge st. 902910
827 Bla Bla Rd. T7G 7K2
Sammy Rd. 38278
where there is a postal code I'd say Canadian and 2 and 4 are US.. So I figured if there is a space after the last 3 digits from the right then it's Can, otherwise US.
Thnks
Please try perl as below
data want;
set have;
if prxmatch('m/\s\d\w\d$/',strip(field)) then flag='Can';
else flag='US';
run;
Please try perl as below
data want;
set have;
if prxmatch('m/\s\d\w\d$/',strip(field)) then flag='Can';
else flag='US';
run;
You could use variations of:
if length(scan(ADDRESS,-1)) in (3,6) then COUNTRY='CANADA';
A different option
1. Use COUNTW to determine the number of words
2. Find last word
3. If Length = 5 then it's US, otherwise, it's CAN.
The Perl is more efficient though
length country $8.;
n_words = countw(text);
last_word = scan(text, n_words);
if length(last_word)=3 then country = 'CAN';
else if length(last_word)=5 then country='US';
else country='CHECKME';
something like this
data want;
set have;
if prxmatch("m/\s.{3}$/oi",trim(addr_ln_1))> 0 then cntry='CAN';
else cntry='US';
run;
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 save with the early bird rate—just $795!
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.