- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
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;
Accepted Solutions
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
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
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
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;
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
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.
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
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;
Jag
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
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
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
What is the 'db' refering?
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
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
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
HI Art,
could you please let me know how to remove entries with at least one number (any number) of a character variable?
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
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
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
Just use the anydigit function. i.e.,
if anydigit(varname) then call missing(varname);
Art, CEO, AnalystFinder.com
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
Thank you very much
Have a good day.
Lalo.
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
Thanks for your kind help.