楼主: 黃河泉
676 9

[程序分享] 分离地址 (县 镇 村 乡) [分享]

大师

19%

还不是VIP/贵宾

-

威望
3
论坛币
26417 个
通用积分
3035.6178
学术水平
2878 点
热心指数
2992 点
信用等级
2318 点
经验
296396 点
帖子
12343
精华
11
在线时间
5341 小时
注册时间
2016-7-9
最后登录
2020-8-15

黃河泉 在职认证  发表于 2020-3-14 11:27:30 |显示全部楼层
刚刚在此 https://www.statalist.org/forums ... ng-this-chinese-str 看到一个分离中文地址之应用,与大家方享。资料为
  1. * Example generated by -dataex-. To install: ssc install dataex
  2. clear
  3. input str51 rural
  4. "青龙满族自治县木头凳镇邱丈子村三队"
  5. "青龙满族自治县木头凳镇邱杖子村"      
  6. "青龙满族自治县隔河头乡草场村"         
  7. "靖远县东升乡柴辛村二队"                  
  8. "靖远县五合乡白塔村"                        
  9. "靖远县北滩乡刘梁村"                        
  10. end
复制代码
Andrew Musau 建议:
  1. local i=1
  2. foreach l in 县 镇 村 乡{
  3.         gen p`i'=strpos(rural,"`l'")
  4.         local ++i
  5. }
  6. gen a = substr(rural, 1, p1-1) + "县"
  7. gen which = regexm(rural,"镇")
  8. gen b = cond(which, substr(subinstr(rural, a, "", .), 1, p2-p1), substr(subinstr(rural, a, "", .), 1, p4-p1))
  9. gen c = cond(which, substr(subinstr(rural, a+b, "", .), 1, p3-p2), substr(subinstr(rural, a+b, "", .), 1, p3-p4))
  10. list rural a b c, sep(6)
复制代码
结果为: sa.png


回帖推荐

songking 发表于10楼  查看完整内容

如果是这种格式的地址的话,其实有更简单直观的处理方法: forvalues i=1/3{ gen a`i'="" replace a`i' =ustrregexs(`i') if ustrregexm(rural,"(.+\县)(.+\乡)(.+\村)") replace a`i' =ustrregexs(`i') if ustrregexm(rural,"(.+\县)(.+\镇)(.+\村)") }
已有 4 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
葫芦娃大王 + 10 + 10 + 2 + 2 精彩帖子
Sunknownay + 3 + 3 + 3 精彩帖子
震震果实 + 4 + 4 + 4 + 4 精彩帖子
crystal8832 + 50 + 2 + 2 + 2 精彩帖子

总评分: 经验 + 10  论坛币 + 64  学术水平 + 11  热心指数 + 11  信用等级 + 9   查看全部评分

stata SPSS
cyllwt 学生认证  发表于 2020-3-14 22:45:55 |显示全部楼层
很实用很实用
回复

使用道具 举报

lonestone 在职认证  发表于 2020-3-15 08:47:17 来自手机 |显示全部楼层
黃河泉 发表于 2020-3-14 11:27
刚刚在此 https://www.statalist.org/forums/forum/general-stata-discussion/general/1541156-ask-for-spl ...
谢谢楼主的分享
回复

使用道具 举报

葫芦娃大王 学生认证  发表于 2020-3-15 15:42:42 |显示全部楼层
微信截图_20200315154147.png
为什么会出现这样的情况呢?
回复

使用道具 举报

黃河泉 在职认证  发表于 2020-3-15 16:03:57 |显示全部楼层
葫芦娃大王 发表于 2020-3-15 15:42
为什么会出现这样的情况呢?
不要用 "复制代码" (这个功能有问题,请版主反应一下,谢谢),自己人工复制,再试试看!
已有 1 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
葫芦娃大王 + 10 + 10 + 1 + 1 + 1 精彩帖子

总评分: 经验 + 10  论坛币 + 10  学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

回复

使用道具 举报

yuqr1986 学生认证  发表于 2020-3-16 19:17:47 |显示全部楼层
谢谢黄老师分享
回复

使用道具 举报

葫芦娃大王 学生认证  发表于 2020-3-17 21:16:15 |显示全部楼层
黃河泉 发表于 2020-3-15 16:03
不要用 "复制代码" (这个功能有问题,请版主反应一下,谢谢),自己人工复制,再试试看!
好的,谢谢黄老师
回复

使用道具 举报

静心品茶 发表于 2020-3-18 20:54:51 |显示全部楼层
谢谢黄老师分享
回复

使用道具 举报

只争朝夕! 发表于 2020-5-17 10:07:19 来自手机 |显示全部楼层
黃河泉 发表于 2020-3-14 11:27
刚刚在此 https://www.statalist.org/forums/forum/general-stata-discussion/general/1541156-ask-for-spl ...
谢谢大师
回复

使用道具 举报

songking 发表于 2020-5-19 20:21:11 |显示全部楼层
如果是这种格式的地址的话,其实有更简单直观的处理方法:
forvalues i=1/3{
gen a`i'=""
replace a`i' =ustrregexs(`i')  if ustrregexm(rural,"(.+\县)(.+\乡)(.+\村)")
replace a`i' =ustrregexs(`i')  if ustrregexm(rural,"(.+\县)(.+\镇)(.+\村)")
}
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
黃河泉 + 5 + 5 + 5 精彩帖子

总评分: 学术水平 + 5  热心指数 + 5  信用等级 + 5   查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 我要注册

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2020-8-15 16:36