我有一个用于具有不同结构的唯一ID代码的字符串变量,我想要i)替换特定位置处的特定字符(错误的数据输入)和ii)将最后一部分保留在一个在某些之后开始的新变量中
为了说明这一点,我的一些 ID 的结构如下:000XXXX000XXXX000001234560780912340567
其中 X 是字符串字符,其中一些是错误的,例如,第 4 个 X(位置 7)处有数字,我想用正确的字符替换它们。
关于ii),最后一部分是一个唯一的数字序列,我想将其保留在一个新变量中,问题是该序列的长度不同,因此不会从相同的位置开始。然而,它似乎总是在
"00"
之后开始,我认为这是有意义的开始它。
我已经尝试过
substr()
和subinstr()
但无法解决。
clear
set obs 1
gen whatever = "000XXXX000XXXX000001234560780912340567"
replace whatever = substr(whatever, 1, 6) + "Y" + substr(whatever, 7, .)
gen wanted = substr(whatever, strrpos(whatever, "00") + 2, .)
di whatever[1]
di wanted[1]
结果:
. di whatever[1]
000XXXYX000XXXX000001234560780912340567
. di wanted[1]
1234560780912340567