所以我在Stata中有一个数据集,它有一个名为“程序描述”的变量,它具有非常相似的观察结果,尽管观察结果并不遵循任何模式。我的目标是清理变量,以便非常相似的观察结果具有相同的名称。
以下是变量的示例:
Variable Name
phys ed
physical education
phys ed k-12
learning disabilities
learn dis
learn disable
因此,我希望前三个被称为“物理”(或其衍生物),后三个被称为“学习障碍”
我一直在使用函数strpos()
来替换包含某些短语的观察,但由于变量有100k观测值和许多不同的名称,这需要一段时间。
答案 0 :(得分:3)
您可以使用SSC中的strgroup
,但它不太可能让您一路走来。例如,这似乎有效:
. 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我也遇到过这些问题。这称为和解。
通过所有这些方法,一些标准化有很长的路要走。