I am trying to extract the middle 2 numbers from the group names below:
I applied the formula below; however, I am getting an error.
Here is one way:
data have; informat groupname $15.; input groupname; want=substr(groupname,anydigit(groupname)+2,2); cards; VIPER170891 HEAT170992 BULLS170691 ;
Art, CEO, AnalystFinder.com
Here is one way:
data have; informat groupname $15.; input groupname; want=substr(groupname,anydigit(groupname)+2,2); cards; VIPER170891 HEAT170992 BULLS170691 ;
Art, CEO, AnalystFinder.com
Thank you for your help; It worked !
After posting my suggestion, I noticed that your initial code looked like it was pulled from a proc sql instance. If so, the following would work:
data have;
informat groupname $15.;
input groupname;
cards;
VIPER170891
HEAT170992
BULLS170691
;
proc sql;
create table want as
select substr(t1.groupname,anydigit(groupname)+2,2) as want
from have t1
;
quit;
Art, CEO, AnalystFinder.com
if your pattern holds true for all obs
data have;
informat groupname $15.;
input groupname;
want=reverse(substr(reverse(strip(groupname)),3,2));
cards;
VIPER170891
HEAT170992
BULLS170691
;
/*if reading a dataset*/
data have;
informat groupname $15.;
input groupname;
cards;
VIPER170891
HEAT170992
BULLS170691
;
data want;
set have;
want=reverse(substr(reverse(strip(groupname)),3,2));
run;
Another way, this 'kd' thing was shared by Art to me only yesterday 🙂
data have;
informat groupname $15.;
input groupname;
cards;
VIPER170891
HEAT170992
BULLS170691
;
data want;
set have;
want=substr(compress(strip(groupname),'','kd'),3,2) ;
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!
Check out this tutorial series to learn how to build your own steps in SAS Studio.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.