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

SAS变量中第一个数字的条件删除,sas,conditional,substr,digit,Sas,Conditional,Substr,Digit,我有一个名为“animid”的字符变量,其值如下: 215298 275899 287796 214896 98154 97856 78-21 213755 21-45 31-457 我只想删除长度为6位的数字中的第一位数字(“2”)(例如213755、214896等)。我无法删除长度为5或更少的数字的第一位(例如21-45、98154) 我使用下面的代码试图减去最后5位数字 data new; set old; new_animid =substr (animid,max(1,length(a

我有一个名为“animid”的字符变量,其值如下:

215298

275899

287796

214896

98154

97856

78-21

213755

21-45

31-457

我只想删除长度为6位的数字中的第一位数字(“2”)(例如213755、214896等)。我无法删除长度为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个数字的数字。

要删除第一个数字,只需使用
SUBSTR(,2)


使用正则表达式:

_animid=prxchange('s/^2(\d{5})/$1/',-1,animid);
_animid=prxchange('s/^2(\d{5})/$1/',-1,animid);