Stata 正则表达式筛选:提取数字并处理 '万' 和逗号
在 Stata 中,可以使用 regexm() 函数和正则表达式来筛选数据并提取特定信息。以下是如何使用正则表达式将 '8万' 识别为 '8' 以及将 '1,000万' 识别为 '1,000' 的示例:
clear
input str20 value
'8万'
'1,000万'
end
gen number = regexm(value, '([0-9,]+)万', 1)
replace number = regexs(0) if missing(number)
replace number = subinstr(number, ',', '', .) // 去除逗号
list
代码解释:
- 创建示例数据: 首先,我们创建一个名为
value的字符串变量,其中包含 '8万' 和 '1,000万' 两个值。 - 使用
regexm()提取数字: 使用regexm(value, '([0-9,]+)万', 1)函数,我们可以提取 '万' 字符前的数字部分,包括逗号。正则表达式'([0-9,]+)万'会匹配包含数字和逗号的字符串,并以 '万' 结尾。regexm()函数的第三个参数 '1' 表示返回第一个匹配的子字符串。 - 处理缺失值: 如果
regexm()函数没有找到匹配项,则number变量会被设置为缺失值。我们使用replace number = regexs(0) if missing(number)将缺失值替换为空字符串,以便后续处理。 - 去除逗号: 最后,我们使用
subinstr()函数将number变量中的逗号替换为空字符串,得到最终的数字结果。
输出结果:
+-------------+
| value number |
|-------------|
1. | 8万 8 |
2. | 1,000万 1,000 |
+-------------+
通过以上步骤,我们成功地将 '8万' 识别为 '8',将 '1,000万' 识别为 '1,000'。
原文地址: https://www.cveoy.top/t/topic/eClu 著作权归作者所有。请勿转载和采集!