全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Stata专版
12043 8
2015-08-07
最近写论文需要整理统计局发布的行政区域代码
regional_code.xls
大小:(278 KB)

 马上下载

,因为从网页上copy 下来就是代码和地名混在一列,所以需要把代码和地名分开。导入stata后,整理数据,由于代码都是六位,所以用--substr-- 命令很容易就整理好了,但是当需要整理地名的时候,因为地名长度不一致,所以想到用stata内置的正则表达式 --regex-- --regexm--, 但是我发现,当我使用类似于 ([a-zA-Z]+)$ 这样的正则表达式的时候,返回的都是空值,gen county = regexs(0) if regexm(region, "([a-zA-Z]+)$"),我反反复复尝试了各种组合都是这个结果,这让我非常困惑,是否stata里面的正则表达式不适用于中文字符? 行政区代码和地名


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2015-8-7 22:57:09
http://www.regular-expressions.info/unicode.html
我不知道stata具体算是什么flavor
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2015-8-8 17:19:16
1、你的excel数据的最后两个样本不是区域的代码和名称

2、
*截取代码
gen code    =substr(rawcode, 1,6)

*把rawcode中的code替换为空的
gen rawcode1=subinstr(rawcode, code,"",.)

*读取rawcode1数据中非数字和汉字的字符,生成变量x
gen x =regexs(0) if regexm(rawcode1,"([?]+)")

*把rawcode1数据中非数字和汉字的字符替换为空的
gen name=subinstr(rawcode1, x,"",.)

*保留代码和区域名称
keep code name
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2017-10-13 15:01:19
蓝色 发表于 2015-8-8 17:19
1、你的excel数据的最后两个样本不是区域的代码和名称

2、
请问大神,gen x =regexs(0) if regexm(rawcode1,"([?]+)") 这句命令好像生成的是空值,不是空格之类的,有别的办法找到非数字和汉字的字符吗? 谢谢
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2017-10-14 16:58:50
caesarljs 发表于 2017-10-13 15:01
请问大神,gen x =regexs(0) if regexm(rawcode1,"([?]+)") 这句命令好像生成的是空值,不是空格之类的, ...
我这里执行没有问题
复制代码


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2017-10-19 13:50:12
蓝色 发表于 2017-10-14 16:58
我这里执行没有问题
感谢大神的解答,是不是版本的问题,我用的是14.2。一会我在尝试一下试试  
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群