I want to fetch variable values ,if first letter of variable value is digit then that digit should be omitted and want to fetch values.
varible:
ram
lakshman
manhor1
1hello
2hai
fetched varible:
ram
lakshman
manohar1
hello
hai
proc sql;
create table want as
select case when input(substr(name,1,1),8.)>=0 then compress(name,,'ka') else name end as fetched_name
from have;
quit;
proc sql;
create table want as
select case when input(substr(name,1,1),8.)>=0 then compress(name,,'ka') else name end as fetched_name
from have;
quit;
If this is in EG Query builder you'll need an advanced expression.
Substr out the first character and use the anydigit function
If this was a data step:
data want;
set have;
first_char=substr(variable, 1,1);
if anydigit(first_char) then fetched_variable=substr(variable, 2);
else fetched_variable=variable;
run;
Please try PRX
proc sql;
create table want as select variable,
case when prxmatch('/\d{1}/',variable)^=1 then variable
else compress(variable,,'ka') end as variable2 from have;
quit;
Thanks,
Jag
data want;
set have;
fetched_variable=prxchange('s/^\d{1}(.)/$1/',-1,variable);
run;
proc sql;
select prxchange('s/^\d{1}(.)/$1/',-1,variable) as fetched_variable from have;
quit;
hi,
thanks.
instead of the input(substr(name,1,1),8.)>=0,we can use notdigit(substr(name,1,1)) --easy to understand .
Hi,
Yes, this is a better way to do that. I think notalpha(substr(name,1,1)) will be used instead of notdigit(substr(name,1,1)) to get the desired results.
Available on demand!
Missed SAS Innovate Las Vegas? Watch all the action for free! View the keynotes, general sessions and 22 breakouts on demand.
What’s the difference between SAS Enterprise Guide and SAS Studio? How are they similar? Just ask SAS’ Danny Modlin.
Find more tutorials on the SAS Users YouTube channel.