楼主: dongdongcufe
29085 12

[数据管理求助] 用stata提取行业代码 [推广有奖]

  • 0关注
  • 0粉丝

小学生

71%

还不是VIP/贵宾

-

威望
0
论坛币
54 个
通用积分
0.1200
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
90 点
帖子
9
精华
0
在线时间
8 小时
注册时间
2007-6-25
最后登录
2017-7-23

楼主
dongdongcufe 发表于 2017-7-18 16:15:16 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
请问一下, stata数据集中为什么证券代码和行业代码是红色的?
另外,提取行业代码的第1位时,用gen indu=substr(industry,1,1)时,indu的观测值为空?
二维码

扫码加我 拉你入群

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

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

关键词:Stata tata Industry STATA数据 SUBSTR

已有 1 人评分论坛币 收起 理由
aclyang + 20 精彩帖子

总评分: 论坛币 + 20   查看全部评分

沙发
左耳cz 发表于 2017-7-18 17:18:56
红色可能是因为你证券代码和行业代码中有文本字符,stata默认变量位文本就是红色的,你可以使用destring转换,具体的语法查看help;提取第一位时观测值为空你可以查看是否前面有空格,你没数据图片不清楚到底怎么回事。

藤椅
dongdongcufe 发表于 2017-7-19 15:34:53
谢谢啊!但我用subinstr命令显示0 real changes made, 请问什么原因?数据结构如下,从Excel导入的stata数据集

stkcd                         industry
"        000001"        "        I01"
"        000002"        "        J01"
"        000004"        "        C81"
"        000005"        "        K99"
"        000006"        "        J01"
"        000007"        "        K32"
"        000008"        "        C75"
"        000009"        "        M"
"        000010"        "        E01"

板凳
黃河泉 在职认证  发表于 2017-7-19 15:51:29
dongdongcufe 发表于 2017-7-19 15:34
谢谢啊!但我用subinstr命令显示0 real changes made, 请问什么原因?数据结构如下,从Excel导入的stata数据 ...
请用 dataex (先 ssc install dataex 并见说明) 将原始 Stata 资料中具有”代表性”的一部分资料列出,以供有意回答者实验之用,并能提供具体操作指令。例如:
  1. dataex stkcd industry in 1/10
复制代码

报纸
dongdongcufe 发表于 2017-7-19 16:09:32
用dataex显示的数据输入如下:
input str7 stkcd str6 industry
"       000001" "       I01"
"       000002" "       J01"
"       000004" "       C81"
"       000005" "       K99"
"       000006" "       J01"
"       000007" "       K32"
"       000008" "       C75"
"       000009" "       M"  
"       000010" "       E01"
"       000011" "       J01"

地板
黃河泉 在职认证  发表于 2017-7-19 16:55:39
dongdongcufe 发表于 2017-7-19 16:09
用dataex显示的数据输入如下:
input str7 stkcd str6 industry
"       000001" "       I01"
谢谢,但是请从 CODE 到 /CODE
复制代码
(包括)请一起 show 出来!

7
黃河泉 在职认证  发表于 2017-7-19 17:09:55
dongdongcufe 发表于 2017-7-19 16:09
用dataex显示的数据输入如下:
input str7 stkcd str6 industry
"       000001" "       I01"
试试
  1. replace industry = trim(itrim(industry))
  2. gen ind = substr(industry,1,1)
复制代码
问题在于有(你看不到的)空白部分!

8
dongdongcufe 发表于 2017-7-19 20:56:49
谢谢啊!用了上面的命令还是不行,我查了一下,用replace industry=trim(industry)更简便一些,但是也不行,我附上stata数据集,包含stkcd和industry,请尝试一下能否解决? indu.dta (18.05 KB)

9
左耳cz 发表于 2017-7-20 18:40:38
  1. gen id_x = substr(stkcd, 2, .)
  2. gen id = real(id_x)
  3. drop id_x
  4. gen inc = substr(industry, 2, 1)
复制代码

使用上述代码可以实现,你之前用substr为什么没有成功是因为你的所有数据文本之前第一位都使用"tab"产生的空格,所以直接用real()转换出来是空值。
这里有一个小技巧:length()函数可以查看你文本的字符数,这样就可以知道文本里面除了你看见的还有几个空格之类的,这样就方便在substr()的时候选择适当的位数。
屏幕快照 2017-07-20 下午6.40.15.png

10
dongdongcufe 发表于 2017-7-20 20:18:30
讲的非常清楚,十分感谢!

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

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