Hi everyone,
I really appreciate all you help on this. I have racked my brain for hours to solve it using perl reg experation but no luck.
I wish to create a variable called "name" from the variable "text" from the below dataset.
data Have;
ID=1;
text='total16z01_model_avg_jan_2016';
output;
ID=2;
text='total17z02_model_1_avg_feb_2017';
output;
ID=3;
text='total13b1_model_2_avg_2013';
output;
run;
desired output:
ID text name
1 total16z01_model_avg_jan_2016 total16z01
2 total17z02_model_1_avg_feb_2017 total17z02_1
3 total13b1_model_2_avg_2013 total13b1_2
Thanks for you help
Here is one way:
data want; set have; name=scan(text,1,'_'); if anydigit(scan(text,3,'_')) then name= catx('_',name,scan(text,3,'_')); run;
Art, CEO, AnalystFinder.com
Here is one way:
data want; set have; name=scan(text,1,'_'); if anydigit(scan(text,3,'_')) then name= catx('_',name,scan(text,3,'_')); run;
Art, CEO, AnalystFinder.com
Without knowing much about regular expressions, I would just have to solve it the old-fashioned way:
data want;
set have;
name = scan(text, 1, '_');
word3 = scan(text, 3, '_');
if input(word3, ??5.) > . then name = trim(name) || '_' || word3;
drop word3;
run;
name=prxchange('s/_[a-z]+|_\d+$//i',-1,strip(text));
Thank you for you help. This solution also works
Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 25. Read more here about why you should contribute and what is in it for you!
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.