查看原文
其他

让你的数据一目了然--label命令介绍

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

本文作者:任哲,中南财经政法大学经济学院

文字编辑:李婷婷 技术总编:余术玲

爬虫俱乐部云端课程

  爬虫俱乐部于2020年暑期在线上举办的Stata与Python编程技术训练营和Stata数据分析法律与制度专题训练营在不久前已经圆满结束啦~应广大学员需求,我们的课程现已在腾讯课堂全面上线,且继续提供答疑服务。现在关注公众号并在朋友圈转发推文《来腾讯课堂学Stata和Python啦》或《8月Stata数据分析法律与制度专场来啦!》,即可获得600元课程优惠券,集赞50个再领200元课程优惠券!(截图发至本公众号后台领取)原价2400元的课程,现在只要1600元!     

一、前言

  你有没有经历过忘记数据文件用途的尴尬?

  你有没有体验过面对变量名一无所知的窘迫?

  你有没有“享受”过思考变量数值意义时的折磨?

  在工作学习中遇到这些问题,实在是让人郁闷。这些问题让你的大脑一团乱麻,要解决它们费时费力,解决之后又没有攻坚克难的成就感,只有耗费时间后的苦涩。这不免让人发问,难道遇到这些问题就没有简单快捷的方法吗?

  当然有了!

  解决问题要从根源出发!今天就为大家介绍一把神兵利器--label命令,来帮助我们从根源上消灭问题。

  就像出厂前要给商品贴上显示信息的精美包装,优秀的数据文件在创建时也要拥有展示自己信息的标签。label命令就是给数据贴标签的神兵利器。

二、语法及实例操作

  下面我们先使用input命令输入一些股本变更信息。具体如下:

clearinput stkcd nshrttl nshra year fillin1  3485013762  3105358511  2010  01  5123350416  3105358672  2011  01  5123350416  3105358022  2012  0600519  943800000  943800000  2010  1600519 1038180000 1038180000 2011 0600519 1038180000 1038180000 2012 1600900 16500000000 7364069666 2010 0600900  16500000000  7364069666  2011  1600900  16500000000  9745941480  2012  0endsave 股本变更, 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 dirlabel list命令查看值标签,结果如下:

label dirlabel list

  可以看到label dir显示本本文件有两个值标签fillinlb和stkcdlb,而label list显示了这两个值标签的具体内容。

  当然,如果你认为某个值标签没有存在的必要了,你不允许你的标签中有浪费内存的存在,那你可以直接在label drop命令后输入标签名进行删除。具体如下:

label drop stkcdlb label dir  list 

  此时可以注意到值标签stkcdlb已经被删除,变量stkcd显示的是1、600519、600900,不再是平安银行、贵州茅台、长江电力。

  最后,可以使用describe查看所有的标签。具体如下:

describe

  如图,红色框部分为数据集的标签,黄色框部分表示该文件有注释,蓝色框部分为变量标签,绿色框部分表示为值标签。

  以上就是label命令的具体用法,当我们完整详尽地把信息写入标签,并贴到数据之中后,我们的数据信息就变得一目了然。无论过了多久,只需要轻轻敲下几个命令,所有信息就会展示在我们面前,是不是真的很方便呢?





对我们的推文累计打赏超过1000元,我们即可给您开具发票,发票类别为“咨询费”。用心做事,不负您的支持!
往期推文推荐
Python推文合集基础篇(下)|算法简介
【小白指南】Python中有哪些数据类型?(附推文合集)

轻松获取通行数据——cntraveltime命令介绍

让Stata完美牵手中国地图之cnmapsearch

自然语言分析——利用NLTK进行文本预处理

寻找B站的最爱--8月B站全站榜爬虫

cnaddress命令——实现经纬度转换为中文地址

定位神器——cngcode

Python入门—Spyder的简单使用

Jupyter Notebook 的这些tips你了解吗?
给变量名换马甲之rename命令

追踪命令set trace on——解你燃眉之急

爬虫大杀器 | “手把手”教你配置Selenium

小白必看!Anaconda安装全攻略

数据类型转换之destring和tostring命令

mvencode和mvdecode——打开缺失值与特定数值转换大门的钥匙
优雅的map()
关于我们


微信公众号“Stata and Python数据分析”分享实用的stata、python等软件的数据处理知识,欢迎转载、打赏。我们是由李春涛教授领导下的研究生及本科生组成的大数据处理和分析团队。

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


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

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