查看原文
其他

数据读入系列之直接输入数据

爬虫俱乐部 Stata and Python数据分析 2022-03-15

本文作者:石河子大学    王涛

文字编辑:张    宇

技术总编:刘洪儒


好消息!!!爬虫俱乐部将于2018年11月30日至2018年12月2日在武汉举行Stata编程技术培训。本次培训主要面向财务、会计和金融专业高校教师、硕博生,课程均是采用财务金融领域的案例,旨在帮助财务金融领域的研究者熟悉Stata数据分析技巧,能够通过编程读取不同类型的数据源、实现复杂数据合并、清洗的程序化,通过简单的程序构造复杂的财务金融指标。详细培训大纲及报名方式,请点击文末阅读原文呦~

爬虫俱乐部是您身边的科研助手,能够为您在数据处理、实证研究中提供帮助。承蒙30000+粉丝的支持与厚爱,我们在腾讯课堂推出了网络视频课程,专注于数据整理、网络爬虫、循环命令编制和结果输出…李老师及团队精彩地讲解,深入浅出,注重案例与实战,让您更加快速高效地掌握Stata技巧及数据处理的精髓,而且可以无限次重复观看,百分百好评,简单易学,一个月让您从入门到精通。绝对物超所值!观看学习网址:https://ke.qq.com/course/286526?tuin=1b60b462,敬请关注!

有问题,不要怕!访问 http://www.wuhanstring.com/uploads/5_aboutus/爬虫俱乐部-用户问题登记表.docx (复制到浏览器中)下载爬虫俱乐部用户问题登记表并按要求填写后发送至邮箱statatraining@163.com,我们会及时为您解答哟~

爬虫俱乐部的github主站正式上线了!我们的网站地址是:https://stata-club.github.io,粉丝们可以通过该网站访问过去的推文哟~

爬虫俱乐部隆重推出数据定制及处理业务,您有任何网页数据获取及处理方面的难题,请发邮件至我们邮箱statatraining@163.com,届时会有俱乐部高级会员为您排忧解难!



数据读入是数据处理任务的第一步。Stata读入数据的方式有很多种,本文介绍一种最直接的方法——input法。

input 语法结构为input+变量名+标签选项,一般以end结束。

我们以中国长江电力股份有限公司高管信息为例演示input的用法。

中国长江电力股份有限公司(简称长江电力,股票代码:600900)公司高管目录下记录了公司成立以来历任公司高管的姓名、职务、起始日期、终止日期等信息。部分信息如下图所示。

(数据来源:新浪财经网)

(http://vip.stock.finance.sina.com.cn/corp/go.php/vCI_CorpManager/stockid/600900.phtml)

公司高管信息是不断变化的,为方便起见,我们仅以长江电力2017年和2018年高管信息数据进行手动输入演示。假如我们仅需要长江电力的股票代码(stkcd)、年份(year)和高管代码序号(id)。我们进行如下操作:

我们先输入长江电力2017年的高管数据信息。

clear input stkcd year id
600900  2017  1
600900  2017  2
600900  2017  3
600900  2017  4
600900  2017  5
600900  2017  6
end browse

结果如下:

2018年,长江电力新引进一批高管,我们可在2017年数据基础上追加,键入:

input  // 此处变量名省略, Stata默认纵向增加数据,类似于append,使数据 “变长”。
600900  2018  7
600900  2018  8
600900  2018  9
600900  2018  10
600900  2018  11
end browse

结果如下:

接着,继续丰富高管信息,我们增加公司高管的任职日期(startdate),键入:

input startdate  // 使数据变宽,类似于merge。
20170309
20170309
20170309
20170519
20170921
20171115
20180705
20180724
20180724
20180724
20180725
format %10.0g startdate  // 使日期得以全部显示,Stata默认为float型。 browse

结果如下:

当我们增加公司高管离职日期(enddate)时,有的高管离职日期尚未确定,此时,我们可用英文键盘下的句号表示缺失值,键入:

input enddate
20171128
20180505
20180505
20180505
.
20180505
. . . . . format %10.0g enddate   browse

结果如下:

有了公司的股票代码、年份、高管代码序号、任职日期和离职日期,还需明确公司高管姓名和担任的职务类型。我们知道变量类型有两种——数值型和字符型。数值型有五种类型,分别是byte、int、long、float、double,其主要区别为存储范围和精度不一样,Stata默认为数值型;字符型分为str#和strL,其中strL最大存储长度为20亿。

我们输入高管姓名及其担任的职务时,需指明变量高管姓名(name)和担任职务(position)为字符型变量,键入:

clear input stkcd year id startdate enddate  str15 name  str15 position
600900  2017 1 20170309 20171128 黄历新 监事
600900  2017 2 20170309 20180505 张必贻 独立董事
600900  2017 3 20170309 20180505 文秉友 独立董事
600900  2017 4 20170519 20180505 夏颖 监事
600900  2017 5 20170921 .  王宏 副总经理
600900  2017 6 20171115 20180505 燕桦 独立董事
600900  2018 7 20180705 . 陈国庆 总经理
600900  2018 8 20180724 . 马振波 董事
600900  2018 9 20180724 . 赵强 董事
600900  2018 10 20180724 . 陈国庆 董事
600900  2018 11 20180725 . 马振波 副董事长 end format %10.0g startdate   format %10.0g enddate   browse

结果如下:

为提高效率,可用括号对相同存储类型的变量进行归类,如将任职日期和离职日期指定为long型,高管姓名和担任职务指定为字符型,键入:

clear input stkcd year id long (startdate enddate)  str15 (name position)
600900  2017 1 20170309 20171128 黄历新 监事
600900  2017 2 20170309 20180505 张必贻 独立董事
600900  2017 3 20170309 20180505 文秉友 独立董事
600900  2017 4 20170519 20180505 夏颖 监事
600900  2017 5 20170921 .  王宏 副总经理
600900  2017 6 20171115 20180505 燕桦 独立董事
600900  2018 7 20180705 . 陈国庆 总经理
600900  2018 8 20180724 . 马振波 董事
600900  2018 9 20180724 . 赵强 董事
600900  2018 10 20180724 . 陈国庆 董事
600900  2018 11 20180725 . 马振波 副董事长 end   browse

结果如下:

此外,input还可以输入带标签值的数据,如我们想明确高管的性别,定义数值0代表男性,以male表示,数值1代表女性,以female表示,键入:

clear label define sex 0 "male" 1 "female"
input stkcd year id long (startdate enddate)  str15 (name position) gender:sex, label
600900  2017 1 20170309 20171128 黄历新 监事 male
600900  2017 2 20170309 20180505 张必贻 独立董事 male
600900  2017 3 20170309 20180505 文秉友 独立董事 male
600900  2017 4 20170519 20180505 夏颖 监事 female
600900  2017 5 20170921 .  王宏 副总经理 male
600900  2017 6 20171115 20180505 燕桦 独立董事 male
600900  2018 7 20180705 . 陈国庆 总经理 male
600900  2018 8 20180724 . 马振波 董事 male
600900  2018 9 20180724 . 赵强 董事 male
600900  2018 10 20180724 . 陈国庆 董事 male
600900  2018 11 20180725 . 马振波 副董事长 male end   browse

结果如下:

当然,input输入也可以利用选项automatic自动创建值标签,不过此时的标签值默认男性为数值1, 女性为数值2。键入:

clear input stkcd year id long (startdate enddate) str15 (name position) gender:sex, automatic
600900  2017 1 20170309 20171128 黄历新 监事 male
600900  2017 2 20170309 20180505 张必贻 独立董事 male
600900  2017 3 20170309 20180505 文秉友 独立董事 male
600900  2017 4 20170519 20180505 夏颖 监事 female
600900  2017 5 20170921 .  王宏 副总经理 male
600900  2017 6 20171115 20180505 燕桦 独立董事 male
600900  2018 7 20180705 . 陈国庆 总经理 male
600900  2018 8 20180724 . 马振波 董事 male
600900  2018 9 20180724 . 赵强 董事 male
600900  2018 10 20180724 . 陈国庆 董事 male
600900  2018 11 20180725 . 马振波 副董事长 male end   browse

结果如下:

以上就是通过input命令直接输入数据的案例演示。至此,你应该对input直接输入数据的用法已经了如指掌。



对爬虫俱乐部的推文累计打赏超过1000元我们即可给您开具发票,发票类别为“咨询费”。用心做事,只为做您更贴心的小爬虫!

往期推文推荐

关于我们

微信公众号“爬虫俱乐部”分享实用的stata命令,欢迎转载、打赏。爬虫俱乐部是由李春涛教授领导下的研究生及本科生组成的大数据分析和数据挖掘团队。

此外,欢迎大家踊跃投稿,介绍一些关于stata的数据处理和分析技巧。

投稿邮箱:statatraining@163.com

投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到关于stata分析数据的问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存