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.
Join us for SAS Innovate April 16-19 at the Aria in Las Vegas. Bring the team and save big with our group pricing for a limited time only.
Pre-conference courses and tutorials are filling up fast and are always a sellout. Register today to reserve your seat.
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.