楼主: weimsn
8895 5

[作业] STATA中,数字-文字对应关系,如何把其中的文字提取出来。 [推广有奖]

  • 1关注
  • 1粉丝

已卖:1份资源

博士生

89%

还不是VIP/贵宾

-

威望
0
论坛币
451 个
通用积分
66.3049
学术水平
7 点
热心指数
7 点
信用等级
7 点
经验
8587 点
帖子
280
精华
0
在线时间
426 小时
注册时间
2012-5-12
最后登录
2026-1-11

楼主
weimsn 发表于 2018-1-29 20:20:52 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

如,1-安微,6-广东, 9-中国陕西  ………………。

如何 把   安微、广东,中国陕西等等,这些数字背后的文字提取出来,赋于一个新的变量?

二维码

扫码加我 拉你入群

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

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

关键词:Stata 对应关系 tata

沙发
youngphone 发表于 2018-1-29 23:14:26
可以用正则表达式,比如你给的变量是x,则生成新变量y,gen y = regexr(x, "[^0-9]+", ""), y就是把非数字的字符都替换为空,正则表达式的用法看百度,估计stata的manual里也有

藤椅
115861 发表于 2019-4-20 18:29:54
youngphone 发表于 2018-1-29 23:14
可以用正则表达式,比如你给的变量是x,则生成新变量y,gen y = regexr(x, "[^0-9]+", ""), y就是把非数字 ...
尝试了,似乎效果不太好,不知道怎么回事

  1. clear
  2. input str23 dhhm
  3. "0577-86886652*"     
  4. "0576-87449109*"     
  5. "0396-5591287*559128"
  6. "0513-86319588*"     
  7. "0574-62465733*"     
  8. "0898-83321675*0"   
  9. "0512-57493285*"     
  10. "021-64345826*"      
  11. "0798-13979811019*"  
  12. "0576-85136007*"     
  13. end
  14. gen y = regexr(dhhm, "[^0-9]+", "")
  15. /*结果如下
  16. y
  17. 057786886652*
  18. 057687449109*
  19. 03965591287*559128
  20. 051386319588*
  21. 057462465733*
  22. 089883321675*0
  23. 051257493285*
  24. 02164345826*
  25. 079813979811019*
  26. 057685136007*
  27. */
复制代码



板凳
adamliu304 发表于 2019-9-24 11:15:57
用rdecode 变量名,replace,就可以只保留该变量的文字部分了。

报纸
27148526 发表于 2020-12-30 11:09:56
youngphone 发表于 2018-1-29 23:14
可以用正则表达式,比如你给的变量是x,则生成新变量y,gen y = regexr(x, "[^0-9]+", ""), y就是把非数字 ...
很好用,楼主这样是提取出字符型的年月日,如果想直接保留数字型的年份的话,也可以用:gen y = real(substr(regexs(0)), 1, 4) if regexm( x ,"([0-9]+)")

地板
yinpeiwei 在职认证  发表于 2021-11-10 10:33:22
youngphone 发表于 2018-1-29 23:14
可以用正则表达式,比如你给的变量是x,则生成新变量y,gen y = regexr(x, "[^0-9]+", ""), y就是把非数字 ...
博主这个命令,可以实现“把非数字的字符串都替换为空”的目标,这在将字符串中的数字分离出来的过程中很有帮助。

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

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2026-1-24 06:18