Hello, all:
I would like to remove the last number from the ID column. I have 300 ID names which need to do this repeatly. Please let me know how, thanks.
data state;
input ID $;
cards;
TN1
TN2
TN3
UCH1
UCH2
UCH3
UCH4
UCH5
ICFG1
ICFG2
ICFG3
ICFG4
ICFG5
ICFG6
;
run;
find a digit, searching from right to left. And, as I think about it, the code I suggested should actually have been:
data want; set state; if findc(id,,'db') eq length(id) then id=substr(id,1,findc(id,,'db')-1); run;
i.e., only remove the last character .. if it is a digit.
Art, CEO, AnalystFinder.com
There are several ways to remove the numbers:
data state;
input ID $;
/*1*/ id = translate(id,'','0123456789');
/*2*/ id = compress(id,'0123456789');
/*3*/ id = compress(id,' ','D');
cards;
... your data ...
run;
You could also do:
id = compress(id,,'ka');
K=Keep, A=Alpha.
http://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/viewer.htm#a000212246.htm
Might be a bit shorted if you had other things as there are a few options in compress.
data state;
input ID $;
new=prxchange('s/\d$/ /',-1,strip(id));
cards;
TN1
TN2
TN3
UCH1
UCH2
UCH3
UCH4
UCH5
ICFG1
ICFG2
ICFG3
ICFG4
ICFG5
ICFG6
;
run;
If you only want to remove one digit if it exists at the end of an id you could use:
data want; set state; if findc(id,,'db') then id=substr(id,1,findc(id,,'db')-1); run;
Art, CEO, AnalystFinder.com
What is the 'db' refering?
find a digit, searching from right to left. And, as I think about it, the code I suggested should actually have been:
data want; set state; if findc(id,,'db') eq length(id) then id=substr(id,1,findc(id,,'db')-1); run;
i.e., only remove the last character .. if it is a digit.
Art, CEO, AnalystFinder.com
HI Art,
could you please let me know how to remove entries with at least one number (any number) of a character variable?
HI Art,
could you please let me know how to remove entries with at least one number (any number) of a character variable?
Thanks
Lalo
Just use the anydigit function. i.e.,
if anydigit(varname) then call missing(varname);
Art, CEO, AnalystFinder.com
Thank you very much
Have a good day.
Lalo.
Thanks for your kind help.
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.