Stata:比较字符串变量

时间:2014-03-20 17:33:41

标签: stata

我有两个字符串变量,每个观察一个字符不同。我需要得到那个不同角色的位置。 我曾尝试使用indexnot()函数,但由于两个字符串中的字符相同,因此会产生错误结果。 这是一个说明性的例子,变量position是我想要的:

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

1 个答案:

答案 0 :(得分: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会自动循环遍历此处的所有观察,因此所需的唯一循环是字符串位置。