Stata中如何去除字符串变量末尾的特定后缀(如INC、CO等)
Stata移除公司名称末尾后缀的简洁方案
针对字符串变量中末尾带INC、CO、& CO等后缀的情况,用正则表达式可以一次性高效处理,兼顾大小写、后缀前的空格以及可选的点(如INC.):
核心代码(推荐Unicode版本)
假设你的公司名称变量名为company,生成清理后的变量clean_company:
* 匹配并移除末尾的指定后缀,大小写不敏感 gen clean_company = ustrregexr(company, "\s*(?:& CO|CO|INC)\.?$", "", 1) * 清理首尾多余空格 replace clean_company = ustrtrim(clean_company)
正则表达式说明
\s*:匹配后缀前的0个或多个空格(比如"ABC CO"中的空格)(?:& CO|CO|INC):非捕获组,按顺序匹配多个后缀(先匹配& CO避免误拆)\.?:匹配可选的英文点号(兼容INC.、CO.这类写法)$:锚定字符串末尾,确保只移除结尾的后缀- 最后一个参数
1:开启大小写不敏感模式,兼容inc、Inc等写法
扩展支持更多后缀
如果需要处理LLC、LTD等其他后缀,直接在正则组中添加即可:
gen clean_company = ustrregexr(company, "\s*(?:& CO|CO|INC|LLC|LTD)\.?$", "", 1) replace clean_company = ustrtrim(clean_company)
旧版Stata兼容方案
若你的Stata版本不支持ustrregexr,可以用regexr配合大小写转换:
* 先转大写匹配后缀,再清理空格 gen clean_company = regexr(upper(company), "\s*(?:& CO|CO|INC)\.?$", "") * 还原为首字母大写格式(按需调整) replace clean_company = proper(clean_company) replace clean_company = ustrtrim(clean_company)
测试案例
| 原公司名称 | 清理后名称 |
|---|---|
| Tech Solutions INC | Tech Solutions |
| Global Trading & CO | Global Trading |
| Local Business CO. | Local Business |
| Small Retail inc | Small Retail |
内容的提问来源于stack exchange,提问作者Ali
相关产品推荐
相关产品推荐

