让你的数据一目了然--label命令介绍
本文作者:任哲,中南财经政法大学经济学院
文字编辑:李婷婷 技术总编:余术玲
爬虫俱乐部云端课程
一、前言
你有没有经历过忘记数据文件用途的尴尬?
你有没有体验过面对变量名一无所知的窘迫?
你有没有“享受”过思考变量数值意义时的折磨?
在工作学习中遇到这些问题,实在是让人郁闷。这些问题让你的大脑一团乱麻,要解决它们费时费力,解决之后又没有攻坚克难的成就感,只有耗费时间后的苦涩。这不免让人发问,难道遇到这些问题就没有简单快捷的方法吗?
当然有了!
解决问题要从根源出发!今天就为大家介绍一把神兵利器--label
命令,来帮助我们从根源上消灭问题。
就像出厂前要给商品贴上显示信息的精美包装,优秀的数据文件在创建时也要拥有展示自己信息的标签。label
命令就是给数据贴标签的神兵利器。
二、语法及实例操作
下面我们先使用input
命令输入一些股本变更信息。具体如下:
clear
input stkcd nshrttl nshra year fillin
1 3485013762 3105358511 2010 0
1 5123350416 3105358672 2011 0
1 5123350416 3105358022 2012 0
600519 943800000 943800000 2010 1
600519 1038180000 1038180000 2011 0
600519 1038180000 1038180000 2012 1
600900 16500000000 7364069666 2010 0
600900 16500000000 7364069666 2011 1
600900 16500000000 9745941480 2012 0
end
save 股本变更, replace
很明显,这个数据看起来还是挺吃力的。但不要怕,接下来本文将从数据集、数据变量、数值三个方面,由表及里,展示如何通过label
命令让它脱胎换骨,一目了然。
1. 对数据集贴标签
首先我们对数据集贴标签,规定特定名称。基本语法如下:
label data ["label"]
在本例中,我们观察数据,发现它是三家公司的股本变更信息,我们把这些信息写到标签里。其代码如下:
label data "000001、600519、600900的股本变更信息"
describe
describe
命令可以看到已经成功地添加了数据集标签。如果你觉得还不够,还可以使用notes
命令添加注释。用法非常简单,只需在note后面添加注释内容,查看注释时只需要输入notes即可查看。代码如下:note: 000001、600519、600900分别代表平安银行、贵州茅台、长江电力
note: 包含2010至2012年的信息
notes
2. 对数据变量贴标签
除了直接对数据集贴标签之外呢,我们还可以对变量贴上标签,方便我们使用时识别各个变量。其基本语法为:
label variable varname ["label"]
在本例中,我们给所有变量都添加上标签。具体如下:
label var stkcd "证券代码"
label var nshrttl "总股数(单位:股)"
label var nshra "A股流通股(单位:股)"
label var year "年份"
label var fillin "变动情况"
describe
describe
命令可以看到所有的变量标签都被成功地添加了。3. 对数值贴标签
接着,我们通过label
命令来对变量的观察值添加标签,用于显示该变量下各个取值的不同含义。这一步可以说是提升我们阅读效率最为显著的一个方面,同时也是label
命令里最复杂的地方,可一定要看仔细喽!基本语法如下:
label define lblname # "label" [# "label" …] [, add modify replace]
label values varlist lblname [, nofix]
可以看到,与对数据集,数据变量贴标签不同,给数值贴标签分为了两步:
第一步,是设置标签名lblname,也就是要告诉Stata,变量下不同观察值的含义。# 指的是变量的具体取值;后续跟的"label"就是该值所代表的含义。而add、modify、replace这些选项,是对标签名进行修改。
第二步,就是将设置的标签名lblname赋值给具体变量varlist。
标签名的内容,要根据数据的具体情况而定。本例中我们先对变量fillin设置标签,设置完标签名之后,我们就可以对变量进行赋值啦。具体代码如下:
label define fillinlb 1 "发生变动" 0 "未发生变动"
label values fillin fillinlb
我们看到标签已经贴上了,但要注意,贴标签是不会改变数据类型的。比如我们双击 发生变动 就可以看到其真实数值仍为 1 。
要特别注意的是,Stata无法重复设置值标签。这个时候,如果想要对已经存在的值标签进行修改,就要使用add、modify、replace选项了。具体用法如下:
label define stkcdlb 1 "平安银行" 600519 "茅台"
label define stkcdlb 600900 "长江电力", add //add用于添加标签名内容
label values stkcd stkcdlb
我们看到一开始设置的值标签和后续添加的值标签都已经被贴上了。接下来,我们对值标签进行修改:
label define stkcdlb 600519 "贵州茅台", modify //modify用于对已存在的标签名内容做修改
label define fillinglb 1 "变动" 0 "未变动", replace //replace用于替换已存在的标签名内容
可以看到600519对应的值标签 茅台 变成了 贵州茅台 ,还有变量fillin对应的值标签 未发生变动 变成了 未变动 。
4. 标签的查看
当我们把所有的标签贴上后,再使用时就可以通过查看标签来获取信息了。
首先,想要查看值标签,我们可以使用label dir
和label list
命令查看值标签,结果如下:
label dir
label list
可以看到label dir
显示本本文件有两个值标签fillinlb和stkcdlb,而label list
显示了这两个值标签的具体内容。
当然,如果你认为某个值标签没有存在的必要了,你不允许你的标签中有浪费内存的存在,那你可以直接在label drop
命令后输入标签名进行删除。具体如下:
label drop stkcdlb
label dir
list
此时可以注意到值标签stkcdlb已经被删除,变量stkcd显示的是1、600519、600900,不再是平安银行、贵州茅台、长江电力。
最后,可以使用describe
查看所有的标签。具体如下:
describe
如图,红色框部分为数据集的标签,黄色框部分表示该文件有注释,蓝色框部分为变量标签,绿色框部分表示为值标签。
以上就是label
命令的具体用法,当我们完整详尽地把信息写入标签,并贴到数据之中后,我们的数据信息就变得一目了然。无论过了多久,只需要轻轻敲下几个命令,所有信息就会展示在我们面前,是不是真的很方便呢?
轻松获取通行数据——cntraveltime命令介绍
让Stata完美牵手中国地图之cnmapsearch
自然语言分析——利用NLTK进行文本预处理
寻找B站的最爱--8月B站全站榜爬虫
cnaddress命令——实现经纬度转换为中文地址
Python入门—Spyder的简单使用
追踪命令set trace on——解你燃眉之急
爬虫大杀器 | “手把手”教你配置Selenium
小白必看!Anaconda安装全攻略
微信公众号“Stata and Python数据分析”分享实用的stata、python等软件的数据处理知识,欢迎转载、打赏。我们是由李春涛教授领导下的研究生及本科生组成的大数据处理和分析团队。
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。