我有一个名为“animid”的字符变量,其值如下:
215298
275899
287796
214896
98154
97856
78-21
213755
21-45
31-457
我想仅删除长度为6位的数字(例如213755,214896等)中的第一个数字(“2”)。我不能删除长度为5或更小的数字的第一个数字(例如21-45,98154)。
我使用以下代码尝试减去最后5位
data new;
set old;
new_animid =substr (animid,max(1,length(animid)-4),5);
run;
此代码有效地保留每个值的最后5位数。但是,它也会将31-457之类的数字转换为1-457(这是我不想要的结果。我只想删除第一个数字,如果该值有6位且它以“2”开头)
我基本上问是否有办法向“substr”语句(或SAS中的其他方法)陈述条件。有些东西可以让我删除数字“2”,但仅限于那些有效地以数字“2”开头且有6位数的数字。
答案 0 :(得分:0)
要删除第一个数字,只需使用SUBSTR(,2)
。
new_animid = animid ;
if animid =: '2' and length(animid)=6 then new_animid = substr(animid,2);
答案 1 :(得分:0)
使用正则表达式:
_animid=prxchange('s/^2(\d{5})/$1/',-1,animid);