【问题标题】:Stata: Comparing string variablesStata:比较字符串变量
【发布时间】:2014-03-20 17:33:40
【问题描述】:

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

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

【问题讨论】:

    标签: stata


    【解决方案1】:
    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 自动循环遍历此处的所有观察结果,因此唯一需要的循环是遍历字符串位置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-14
      • 1970-01-01
      • 2018-09-23
      • 2014-04-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多