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;
Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 25. Read more here about why you should contribute and what is in it for you!
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.