1

因此,我在 Stata 中有一个数据集,其中有一个名为“程序描述”的变量,该变量具有非常相似的观察结果,尽管观察结果不遵循任何模式。我的目标是清理变量,以便非常相似的观察结果具有相同的名称。

以下是变量的示例:

Variable Name

phys ed
physical education
phys ed k-12
learning disabilities
learn dis
learn disable

因此,我希望前三个被称为“phys ed”(或它的某种派生词),后三个被称为“学习障碍”

我一直在使用该函数strpos()来替换包含某些短语的观察值,但由于变量有 100k 观察值和许多不同的名称,这需要一段时间。

4

1 回答 1

3

您可以strgroup从 SSC 使用,但它不太可能让您一路走好。例如,这似乎有效:

. strgroup string , gen(group) threshold(.7) normalize(longer)

. list, clean noobs

                   string   group  
                  phys ed       1  
       physical education       1  
             phys ed k-12       1  
    learning disabilities       2  
                learn dis       2  
            learn disable       2  

但是,“物理”将使用这些设置映射到组 1。另外,请注意,此命令区分大小写,因此首先将所有内容大写/小写可能有意义。阈值实际上是一种调优参数。

对于这些问题,我在Google/Open Refine上也遇到了一些运气。这称为和解。

通过所有这些方法,一些标准化会大有帮助。

于 2014-11-05T22:35:19.700 回答