?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
Available on demand!
Missed SAS Innovate Las Vegas? Watch all the action for free! View the keynotes, general sessions and 22 breakouts on demand.
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.