首页 > 解决方案 > 替换变量的一部分并消除空格

问题描述

我在 Stata 中有一个大型数据集,我必须清理名称以便稍后匹配前名。

我的数据中的一个常见问题是变音符号,显示如下:

JEAN S ACUTE OVER E BASTIEN --> JEAN SÉBASTIEN

我可以ACUTE OVER使用以下命令删除:

replace name=subinstr(name," ACUTE OVER ","",.)

但是,我仍然需要考虑 和 之间的E空间BASTIEN。我不能只删除所有空格,因为可以有两个以上的名字。

有什么方法可以以相当简单的方式实现这一目标吗?

请注意,我不关心急性期,E因为无论如何我必须在以后更换它。

标签: stringreplacestata

解决方案


您需要执行多遍才能获得所需的输出。

例如,如果数据中的元音变音始终位于名字之后,并且您事先知道这些是什么,则可以执行以下操作:

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 |
     +------------------+

请注意,此答案中使用的名称是虚构的法语!


推荐阅读