替换Stata中位置的字符串

问题描述 投票:0回答:1

我有一个用于具有不同结构的唯一ID代码的字符串变量,我想要i)替换特定位置处的特定字符(错误的数据输入)和ii)将最后一部分保留在一个在某些之后开始的新变量中

为了说明这一点,我的一些 ID 的结构如下:000XXXX000XXXX000001234560780912340567

其中 X 是字符串字符,其中一些是错误的,例如,第 4 个 X(位置 7)处有数字,我想用正确的字符替换它们。

关于ii),最后一部分是一个唯一的数字序列,我想将其保留在一个新变量中,问题是该序列的长度不同,因此不会从相同的位置开始。然而,它似乎总是在

"00"
之后开始,我认为这是有意义的开始它。

我已经尝试过

substr()
subinstr()
但无法解决。

string position stata substr
1个回答
0
投票
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
© www.soinside.com 2019 - 2024. All rights reserved.