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;
Don't miss out on SAS Innovate - Register now for the FREE Livestream!
Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.
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.