Hi
i want to create three variable using a string
a ='rahul99yadav'
output should be
first_name last_name Id
rahul yadav 99
Have you used regular expressions?
data have_want;
length
first_name last_name $ 40
id $ 10
;
rx = prxparse('/(\D+)(\d+)(\D+)/');
a ='rahul99yadav';
if prxmatch(rx, a) then do;
first_name = prxposn(rx, 1, a);
id = prxposn(rx, 2, a);
last_name = prxposn(rx, 3, a);
end;
drop rx;
run;
I do not know what structure your data have, but how about this?
data test;
length x $200.;
input x $;
datalines;
taro01yamada
gonbe02nanashi
;
run;
data test_1;
set test;
attrib first last id length=$200.;
v=verify(x, "abccdefghijklmnopqrstuvwxyz");
first=substr(x, 1, verify(x, "abccdefghijklmnopqrstuvwxyz")-1);
last=substr(substr(x, verify(x, "abccdefghijklmnopqrstuvwxyz")), verify(substr(x, verify(x, "abcdefghijklmnopqrstuvwxyz")), "0123456789"));
id=substr(substr(x, verify(x, "abccdefghijklmnopqrstuvwxyz")), 1, verify(substr(x, verify(x, "abcdefghijklmnopqrstuvwxyz")), "0123456789")-1);
run;
please try this code.
data have;
length a $200;
input a;
datalines;
rahul99yadav
;
run;
data want;
set have;
length first_name $20 last_name $20 Id $8;
first_name=scan(a,1,,'d');
last_name =scan(a,2,,'d');
Id=scan(a,1,,'dk');
run;
Have you used regular expressions?
data have_want;
length
first_name last_name $ 40
id $ 10
;
rx = prxparse('/(\D+)(\d+)(\D+)/');
a ='rahul99yadav';
if prxmatch(rx, a) then do;
first_name = prxposn(rx, 1, a);
id = prxposn(rx, 2, a);
last_name = prxposn(rx, 3, a);
end;
drop rx;
run;
Thanks a ton
Does it exactly have three variables ?
data test; length x $200.; input x $; datalines; taro01yamada gonbe02nanashi ; run; data want; set test; v1=scan(x,1,,'d'); v2=scan(x,2,,'d'); v3=scan(x,1,,'kd'); run;
Good news: We've extended SAS Hackathon registration until Sept. 12, so you still have time to be part of our biggest event yet – our five-year anniversary!
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.