我在Stata中有一个很大的数据集,我必须清理名称以便以后匹配这些姓氏。
我的数据中常见的一个问题是变音符号,其显示如下:
吉恩·塞巴斯蒂安(JEANSÉBASTIEN)
我可以ACUTE OVER
使用以下命令删除:
replace name=subinstr(name," ACUTE OVER ","",.)
不过,我还是要考虑之间的空间E
和BASTIEN
。我不能只删除所有空格,因为可以有两个以上的姓氏。
有什么办法可以以一种非常简单的方式实现这一目标?
请注意,我并不关心紧急情况,E
因为无论如何我以后都必须更换它。
您需要执行多个遍操作才能获得所需的输出。
例如,如果数据中的变音符号始终位于名字之后,并且您事先知道这些名称,则可以执行以下操作:
clear
input str50 stringvar
"JEAN S ACUTE OVER E BASTIEN"
"JERARD DE ALOHA HEY P ARTIER"
"Etienne SOMETHING ANSEL"
end
replace stringvar = subinstr(strtrim(stringvar), " ", ";", 1)
replace stringvar = subinstr(stringvar, " ", "", .)
foreach x in "ACUTEOVER" "ALOHAHEY" "SOMETHING" {
replace stringvar = subinstr(stringvar, "`x'", "", .)
}
replace stringvar = subinstr(stringvar, ";", " ", 1)
list
+------------------+
| stringvar |
|------------------|
1. | JEAN SEBASTIEN |
2. | JERARD DEPARTIER |
3. | Etienne ANSEL |
+------------------+
请注意,此答案中使用的名称是虚构的法语!
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句