I want to extract the first numeric substring that shows up in a character variable. For example,
data have;
infile datalines delimiter = "," missover;
input string $;
datalines;
abc 12345 &*ag21
bld#5432
8642 12 asd
kmdsf 657
run;
data want;
length string $30. substring $30.;
infile datalines dsd dlm='|' truncover ;
input string $ substring $;
datalines;
abc 12345 &*ag21|12345
bld#5432|5432
8642 12 asd|8642
kmdsf 657|657
run;
Is there a good way to do this in a data step?
You want to look at PRXPOSN Function - Extracting First and Last Names
data have;
infile datalines delimiter = "," missover;
input string $;
datalines;
abc 12345 &*ag21
bld#5432
8642 12 asd
kmdsf 657
run;
data results ;
length string $30. substring $30.;
infile datalines dsd dlm='|' truncover ;
input string $ substring $;
datalines;
abc 12345 &*ag21|12345
bld#5432|5432
8642 12 asd|8642
kmdsf 657|657
run;
data wamt ;
retain patternID ;
set have ;
if _n_=1 then do ;
patternID=prxparse('/([0-9]+)/') ;
end ;
found=prxmatch(patternID,string) ;
want=prxposn(patternID,1,string) ;
put string= found= want= ;
run ;
You want to look at PRXPOSN Function - Extracting First and Last Names
data have;
infile datalines delimiter = "," missover;
input string $;
datalines;
abc 12345 &*ag21
bld#5432
8642 12 asd
kmdsf 657
run;
data results ;
length string $30. substring $30.;
infile datalines dsd dlm='|' truncover ;
input string $ substring $;
datalines;
abc 12345 &*ag21|12345
bld#5432|5432
8642 12 asd|8642
kmdsf 657|657
run;
data wamt ;
retain patternID ;
set have ;
if _n_=1 then do ;
patternID=prxparse('/([0-9]+)/') ;
end ;
found=prxmatch(patternID,string) ;
want=prxposn(patternID,1,string) ;
put string= found= want= ;
run ;
Join us for SAS Innovate 2025, our biggest and most exciting global event of the year, in Orlando, FL, from May 6-9. Sign up by March 14 for just $795.
Learn the difference between classical and Bayesian statistical approaches and see a few PROC examples to perform Bayesian analysis in this video.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.