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

让你的数据一目了然--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
image1.jpg

  很明显,这个数据看起来还是挺吃力的。但不要怕,接下来本文将从数据集、数据变量、数值三个方面,由表及里,展示如何通过label命令让它脱胎换骨,一目了然。

1. 对数据集贴标签

  首先我们对数据集贴标签,规定特定名称。基本语法如下:
label data ["label"]
  在本例中,我们观察数据,发现它是三家公司的股本变更信息,我们把这些信息写到标签里。其代码如下:

label data "000001、600519、600900的股本变更信息"
describe
image2.jpg

  通过describe命令可以看到已经成功地添加了数据集标签。如果你觉得还不够,还可以使用notes命令添加注释。用法非常简单,只需在note后面添加注释内容,查看注释时只需要输入notes即可查看。代码如下:

note: 000001、600519、600900分别代表平安银行、贵州茅台、长江电力
note: 包含2010至2012年的信息
notes
image3.jpg

2. 对数据变量贴标签

  除了直接对数据集贴标签之外呢,我们还可以对变量贴上标签,方便我们使用时识别各个变量。其基本语法为:
label variable varname ["label"]
  在本例中,我们给所有变量都添加上标签。具体如下:

label var stkcd "证券代码"
label var nshrttl "总股数(单位:股)"
label var nshra "A股流通股(单位:股)"
label var year "年份"
label var fillin "变动情况"
describe
image4.jpg

  如图,通过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 
image5.jpg

  我们看到标签已经贴上了,但要注意,贴标签是不会改变数据类型的。比如我们双击 发生变动 就可以看到其真实数值仍为 1。

image6.jpg

  要特别注意的是,Stata无法重复设置值标签。这个时候,如果想要对已经存在的值标签进行修改,就要使用add、modify、replace选项了。具体用法如下:

label define stkcdlb 1 "平安银行" 600519 "茅台"
label define stkcdlb 600900 "长江电力", add //add用于添加标签名内容
label values stkcd stkcdlb
image7.jpg

  我们看到一开始设置的值标签和后续添加的值标签都已经被贴上了。接下来,我们对值标签进行修改:

label define stkcdlb 600519 "贵州茅台", modify  
//modify用于对已存在的标签名内容做修改

label define fillinglb 1 "变动" 0 "未变动", replace  
//replace用于替换已存在的标签名内容
image8.jpg

  可以看到600519对应的值标签 茅台 变成了 贵州茅台 ,还有变量fillin对应的值标签 未发生变动 变成了 未变动

4. 标签的查看

  当我们把所有的标签贴上后,再使用时就可以通过查看标签来获取信息了。
  首先,想要查看值标签,我们可以使用label dirlabel list命令查看值标签,结果如下:

label dir
label list
image9.jpg

  可以看到label dir显示本本文件有两个值标签fillinlb和stkcdlb,而label list显示了这两个值标签的具体内容。
  当然,如果你认为某个值标签没有存在的必要了,你不允许你的标签中有浪费内存的存在,那你可以直接在label drop命令后输入标签名进行删除。具体如下:

label drop stkcdlb  
label dir  
list 
image10.jpg

  此时可以注意到值标签stkcdlb已经被删除,变量stkcd显示的是1、600519、600900,不再是平安银行、贵州茅台、长江电力。
  最后,可以使用describe查看所有的标签。具体如下:

describe
image11.jpg

  如图,红色部分为数据集的标签,黄色部分表示该文件有注释,蓝色部分为变量标签,绿色部分表示为值标签。
  以上就是label命令的具体用法,当我们完整详尽地把信息写入标签,并贴到数据之中后,我们的数据信息就变得一目了然。无论过了多久,只需要轻轻敲下几个命令,所有信息就会展示在我们面前,是不是真的很方便呢?

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,417评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,921评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,850评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,945评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,069评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,188评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,239评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,994评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,409评论 1 304
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,735评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,898评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,578评论 4 336
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,205评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,916评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,156评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,722评论 2 363
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,781评论 2 351