有条件地删除SAS变量中的第一个数字

时间:2017-04-12 01:42:54

标签: sas conditional substr digit

我有一个名为“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位数的数字。

2 个答案:

答案 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);