Stata:比较字符串变量

4

我有两个字符串变量,每个观测值之间只有一个字符不同。我需要找到那个不同字符的位置。 我尝试使用 indexnot() 函数,但由于两个字符串中的字符相同,结果不正确。 下面是一个示例,变量 position 是我想要得到的:

+--------------+--------------+-----------+
|   String 1   |   String 2   | Position  |
+--------------+--------------+-----------+
| 000002002000 | 000000002000 |         6 |
| 000002102000 | 000002002000 |         7 |
| 000002112000 | 000002102000 |         8 |
| 000002112020 | 000002112000 |        11 |
| 000002112120 | 000002112020 |        10 |
+--------------+--------------+-----------+
1个回答

5
gen Position = . 

quietly forval j = 1/12 { 
    replace Position = `j' if substr(String1, `j', 1) != substr(String2, `j', 1) & missing(Position)
} 

这里可能不需要注释,但不会有任何影响。

在没有内置函数的情况下,您需要编写一些使用现有命令和函数的代码。将Position初始化为缺失状态(零也可以作为替代)。然后循环遍历字符,此处为1到12,因为示例显示12个字符字符串。我们记录第一个不同字符的位置。请注意,条件missing(Position)(如果您喜欢,Position == .)将更改限制为遇到的第一个差异。

Stata在此自动循环遍历所有观察值,因此唯一需要的循环是字符串位置。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接