9674 10

[数据管理求助] 求助:如何使用stata将字符“:”和“%” 之间的数字提取出来?谢谢 [推广有奖]

  • 0关注
  • 0粉丝

博士生

43%

还不是VIP/贵宾

-

威望
0
论坛币
3221 个
通用积分
23.7500
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
705 点
帖子
18
精华
0
在线时间
581 小时
注册时间
2016-3-8
最后登录
2025-12-20

楼主
日月近雕梁9 发表于 2018-5-30 14:15:02 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
微信图片_20180530140933.png
二维码

扫码加我 拉你入群

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

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

关键词:Stata 如何使用 tata stata

回帖推荐

arikjin 发表于5楼  查看完整内容

不知道你到底要提取成什么格式的数据,只是提取这2个字符之间的内容的话,有一种笨办法是可以考虑split命令,类似于excel的分列功能。把你的数据导入Stata后,可以试试下列代码 可以看到所有的两个字符中间的内容已经提取出来了

本帖被以下文库推荐

沙发
黃河泉 在职认证  发表于 2018-5-30 16:46:10
你若要问程序,永远附上资料;若要附上资料,永远用 dataex 印出资料;先 ssc install dataex (并见说明),将原始 Stata 资料中具有”代表性”的一部分资料列出,以供有意回答者实验之用,并能提供具体操作指令。并请参考 http://www.jianshu.com/p/9870080fe769,  https://bbs.pinggu.org/thread-5048204-1-1.html, 与 https://bbs.pinggu.org/thread-5917273-1-1.html

藤椅
伟轩 发表于 2018-5-30 22:54:56 来自手机
你具体要提成什么样子?字符串函数里有正则表达式的函数可以参考下

板凳
伟轩 发表于 2018-5-31 12:36:22 来自手机
先按分号分成两列,然后直接用正则表达式把非数字的部分替换成空即可

报纸
arikjin 在职认证  发表于 2018-5-31 14:19:02
不知道你到底要提取成什么格式的数据,只是提取这2个字符之间的内容的话,有一种笨办法是可以考虑split命令,类似于excel的分列功能。把你的数据导入Stata后,可以试试下列代码
  1. split r2017, parse(;) gen(r)
  2. foreach v of varlist r1-r20 {
  3. split `v' , parse(:) gen(`v'_n)
  4. }

  5. brow r*_n2
复制代码

可以看到所有的两个字符中间的内容已经提取出来了
已有 1 人评分热心指数 信用等级 收起 理由
蓝色 + 3 + 3 精彩帖子

总评分: 热心指数 + 3  信用等级 + 3   查看全部评分

地板
日月近雕梁9 发表于 2018-5-31 20:38:15
黃河泉 发表于 2018-5-30 16:46
你若要问程序,永远附上资料;若要附上资料,永远用 dataex 印出资料;先 ssc install dataex (并见说明), ...
好的老师,谢谢您!

7
日月近雕梁9 发表于 2018-5-31 20:48:35
伟轩 发表于 2018-5-31 12:36
先按分号分成两列,然后直接用正则表达式把非数字的部分替换成空即可
谢谢您,得学习一下字符串函数了。

8
日月近雕梁9 发表于 2018-5-31 21:06:22
arikjin 发表于 2018-5-31 14:19
不知道你到底要提取成什么格式的数据,只是提取这2个字符之间的内容的话,有一种笨办法是可以考虑split命令 ...
谢谢您,这个格式就可以,这样算业务HHI就快很多了,谢谢您!

9
arikjin 在职认证  发表于 2018-6-1 08:15:48
日月近雕梁9 发表于 2018-5-31 21:06
谢谢您,这个格式就可以,这样算业务HHI就快很多了,谢谢您!
有一点要注意,循环语句里面的 “r1-r20” 仅针对这个数据库第一次分列出来的结果哈,如果是不同数据库的分列,要根据具体情况写。如果想用一个通用的代码来解决不管分列成多少列,可以考虑在第一次分列的“gen”option里面设定一个不会和其他已有变量名首字母重复的前缀,然后用这个前缀+通配符的形式代替所有第一次新分列出来的列。比如可以把代码改成
  1. split r2017, parse(;) gen(s)
  2. foreach v of varlist s* {
  3. split `v' , parse(:) gen(`v'_n)
  4. }
复制代码

10
日月近雕梁9 发表于 2018-6-3 21:38:40
arikjin 发表于 2018-6-1 08:15
有一点要注意,循环语句里面的 “r1-r20” 仅针对这个数据库第一次分列出来的结果哈,如果是不同数据库的 ...
好的,再次感谢您!:)

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

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2025-12-24 05:12