?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
SAS Innovate 2025 is scheduled for May 6-9 in Orlando, FL. Sign up to be first to learn about the agenda and registration!
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.