在 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

代码解释:

  1. 创建示例数据: 首先,我们创建一个名为 value 的字符串变量,其中包含 '8万' 和 '1,000万' 两个值。
  2. 使用 regexm() 提取数字: 使用 regexm(value, '([0-9,]+)万', 1) 函数,我们可以提取 '万' 字符前的数字部分,包括逗号。正则表达式 '([0-9,]+)万' 会匹配包含数字和逗号的字符串,并以 '万' 结尾。regexm() 函数的第三个参数 '1' 表示返回第一个匹配的子字符串。
  3. 处理缺失值: 如果 regexm() 函数没有找到匹配项,则 number 变量会被设置为缺失值。我们使用 replace number = regexs(0) if missing(number) 将缺失值替换为空字符串,以便后续处理。
  4. 去除逗号: 最后,我们使用 subinstr() 函数将 number 变量中的逗号替换为空字符串,得到最终的数字结果。

输出结果:

     +-------------+
     |    value   number |
     |-------------|
  1. |       8万        8 |
  2. | 1,000万    1,000 |
     +-------------+

通过以上步骤,我们成功地将 '8万' 识别为 '8',将 '1,000万' 识别为 '1,000'。

Stata 正则表达式筛选:提取数字并处理 '万' 和逗号

原文地址: https://www.cveoy.top/t/topic/eClu 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录