regex - Stata:正则表达式搜索和替换整数变量

标签 regex stata

数据说明:包含调查员 ID 和各种调查问题的答案。如果调查的答案之一是 99 或 999 或 9999(无穷无尽),那么这就是“否”的数字表示。如果调查的答案之一是 98 或 998 或 988、9988、998888 等,则用数字表示"is"。大多数数据都是整数形式。

我想将所有值以“9”开头并以“9”结尾的变量替换为“否”一词,以及所有以“9”开头并以“8”结尾的变量与"is"。

我当前的策略是将每个变量转换为字符串tostring_all,replace 然后迭代所有 string_vars 执行以下两个正则表达式:

regexr(`value', "^[9]*[9]$","No")
regexr(`value', "^[9]*[8]$", "Yes")

有没有一种更简单的方法可以做到这一点,而无需将所有值都转换为字符串?

最佳答案

如果你想检查全是9的数字变量,另一种方法是

  ... if subinstr(string(myvar, "%20.0f"), "9", "", .) == "" 

其中 20 是上限,可替换为您需要的最长数字。

您可以使用findname查找所有整数值变量(findit findname表示下载源)。

 findname, all(@==int(@)) local(intvars) 
 foreach v of local intvars { 
         gen s`v' = "YES" if subinstr(string(myvar, "%20.0f"), "9", "", .) == "" 
 }

可能是您想要的一部分。除了"is"和“否”之外还有其他答案吗?

关于regex - Stata:正则表达式搜索和替换整数变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19092766/

相关文章:

installation - 从命令 : ado dir 生成的列表中重新安装软件包

stata - 如何准备数据集以在stata中使用mixlogit

javascript - 如何将这种积极的后向断言转换为前向断言?

java - 如何捕获用户在文本中给出的 URL

regex - Dart:使用正则表达式删除字符串中的空格

javascript - 如何在 JS 中从正则表达式获取选定的 str.replace 值

algorithm - 如何在 Stata 中获得最大运行?

python - 在Stata中高效处理矩阵

excel - Stata:从 Excel 导入时以小写重命名变量

javascript - 如何将此 Javascript 正则表达式更改为不区分大小写?