我有两个字符串变量,每个观察值在一个字符上都不同。我需要得到那个不同角色的位置。我尝试使用indexnot()
函数,但是由于两个字符串中的字符相同,因此会产生错误的结果。这是一个说明性示例,变量position
是我要尝试获得的示例:
+--------------+--------------+-----------+
| String 1 | String 2 | Position |
+--------------+--------------+-----------+
| 000002002000 | 000000002000 | 6 |
| 000002102000 | 000002002000 | 7 |
| 000002112000 | 000002102000 | 8 |
| 000002112020 | 000002112000 | 11 |
| 000002112120 | 000002112020 | 10 |
+--------------+--------------+-----------+
gen Position = .
quietly forval j = 1/12 {
replace Position = `j' if substr(String1, `j', 1) != substr(String2, `j', 1) & missing(Position)
}
评论也许在这里是多余的,但不会对任何人造成伤害。
在没有内置函数执行此操作的情况下,您需要使用现有命令和功能编写一些代码。初始化aPosition
到丢失(零可以替代)。然后循环遍历字符,此处为1到12,因为该示例显示了12个字符串。我们以字符记录第一个差异的位置。请注意条件missing(Position)
(Position == .
如果愿意)如何将更改限制为满足的第一个差异。
Stata会自动遍历此处所有观测值,因此唯一需要的遍历是字符串位置。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句