一日一技|Stata筛选出字符串中非数字的行

您所在的位置:网站首页 正则表达式中非数字字符 一日一技|Stata筛选出字符串中非数字的行

一日一技|Stata筛选出字符串中非数字的行

#一日一技|Stata筛选出字符串中非数字的行| 来源: 网络整理| 查看: 265

前言

本期是新的专栏的第一篇,主要是想写些随笔,但是又是自己感觉一些平时比较有用的小技巧,以期有所帮助hhh下面就是开始正题

问题

首先生成一个数据并且生成它的滞后项

clear input id year str10 price 1 2000 "$800块" 2 2002 "$200元" 3 2004 "800" 4 2006 "四十块" 5 2008 "9.2" end

显示为:

数据显示

我们想筛选出其中的非数字行,即剔除3和5

解决方式

我们结合正则表达式进行list:

list id price if regexm(price,"[^0-9]")

其中,"[^0-9]"表示非数字文本

返回结果

初步结果

但是我们可以看到,9.2被包括在内了,所以这时候需要再加上一句:

list id price if regexm(price,"[^0-9]") & !regexm(price,"[0-9][\.]")

加多一个并列条件,表示不包含数字后紧跟着一个小数点的格式。正则表达式[0-9][\.]表示一个数字后紧跟着一个小数点。在此表达式前添加!表示逻辑非,即筛选出不满足此格式的字符串。即可以实现我们的目标:

最终结果封面图片来源

微博@kelvin李

关注我们

感兴趣的朋友可以关注公众号:

数据线的非标准答案

希望分享一些想记录些数据分析中用到的Python,R,Stata;写作中用到的Markdown和Latex;社科论文学习中记下的计量和数理知识;机器学习和自然语言处理。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3