?data extract;
length Name $15.;
input Name $ Age;
cards;
TomHanks 39
WillSmith 35
ChristopherLee 38
RusselCrow 39
;
how I could extract the Name variable into Fname and Lname
Like
Fname Lname Age
Tom Hanks 39
Wll Smith 35
Or just using Prxchange:
data extract;
length Name $15.;
input Name $ Age;
cards;
TomHanks 39
WillSmith 35
ChristopherLee 38
RusselCrow 39
;
data want;
set extract;
fname=prxchange('s/([A-Z][a-z]+)([A-Z][a-z]+)/$1/o',-1, name);
lname=prxchange('s/([A-Z][a-z]+)([A-Z][a-z]+)/$2/o',-1, name);
run;
Or for a none PRX approach,
data want_noprx;
set extract;
lp=anyupper(substr(name,2));
fname=substr(name,1,lp);
lname=substr(name,lp+1);
run;
Haikuo
data extract; length Name $15.; input Name $ Age; cards; TomHanks 39 WillSmith 35 ChristopherLee 38 RusselCrow 39 ; data FirstLastNames; length first last $ 16; re = prxparse('/([A-Z][a-z]+)([A-Z][a-z]+)/o'); set extract; if prxmatch(re, name) then do; last = prxposn(re, 1, name); first = prxposn(re, 2, name); end; run;
Ksharp
Hi,
I am getting the result but in the output variable 'last' is only displaying variable 'first' is not displaying.
Regards,
Sarath sankar V
Why? I have no such problem.
Hi ,
Thanks Sharp I got it it was some mistake done by me . be in touch.
Regards
Sarath Sankar V
Or just using Prxchange:
data extract;
length Name $15.;
input Name $ Age;
cards;
TomHanks 39
WillSmith 35
ChristopherLee 38
RusselCrow 39
;
data want;
set extract;
fname=prxchange('s/([A-Z][a-z]+)([A-Z][a-z]+)/$1/o',-1, name);
lname=prxchange('s/([A-Z][a-z]+)([A-Z][a-z]+)/$2/o',-1, name);
run;
Or for a none PRX approach,
data want_noprx;
set extract;
lp=anyupper(substr(name,2));
fname=substr(name,1,lp);
lname=substr(name,lp+1);
run;
Haikuo
It's finally time to hack! Remember to visit the SAS Hacker's Hub regularly for news and updates.
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.