string - 替换变量的一部分并消除空格
问题描述
我在 Stata 中有一个大型数据集,我必须清理名称以便稍后匹配前名。
我的数据中的一个常见问题是变音符号,显示如下:
JEAN S ACUTE OVER E BASTIEN --> JEAN SÉ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 |
+------------------+
请注意,此答案中使用的名称是虚构的法语!
推荐阅读
- c# - 使用 moq 忽略方法
- excel - SSIS将自定义标题添加到Excel文件
- python - Python for 循环未正确迭代第二个条件
- python - Python YouTube API 检索视频列表
- javascript - 使用模板文字记录多维数组
- python - django / Apache2 服务器
- mobx - 异步调用的 Mobx 状态
- unit-testing - 如何将任何服务注入 Symfony 中的 WebTestCase 子类?
- php - 在 Woocommerce 3 中获取订单总运费
- exception - 一些调用会导致堆栈展开,但不会引发 C++ 异常