B5. Stata 中的变量名称
整理人: 郭楚玉 (武汉大学)
邮箱: julieguo@whu.edu.cn
1. 新变量的名称
新变量命名的基本规则主要有 3 个:
- 由英为
字母
、数字
或_
组成,至多不超过 32 个字符 - 首字符必须为
字母
或_
- 英文字母的大写和小写具有不同的含义
示例:
- 合理变量名:
roa
,abc_1
,a1
,Gdp_growth
- 非法变量名:
5gdp
,2invest
特别注意:建议不要使用
_
作为变量的第一个字母,因为许多 Stata 的内部变量都是以_
开头的,如:_n
,_N
,_cons
,_b
等等。 详情参见help _variables
([U] variables)。
2. 变量重命名
我们往往需要对原始数据进行加工,如取对数,计算比率、增长率等。这涉及到对旧变量的更名。这里主要介绍三个命令:
- 单个变量重命名:
help rename
- 批量重命名:
help rename group
- 批量添加前缀或后缀:
help renvars
下面使用 Stata 自带的 auto.dta 数据集进行展示:
sysuse "auto.dta", clear
order make price rep78 mpg foreign trunk
rename make mk
rename (price rep78) (Price REP78) // 批量重命名
rename mpg foreign trunk, upper // 大写
prefix(d1_) renvars hea wei len,
3. 变量标签
因为变量的命名有字符长度限制,更详细的解释内容可以放入变量标签内。为变量附加文字标签可以使用 label var
命令,例如
sysuse "nlsw88.dta", clear
label var price "汽车价格($)"
label var rep78 "维修次数"`
des
4. 数字-文字对应表
在数据分析中,类别变量通常是以数字表示的。为了便于理解和解读,我们可以为这些数字赋予相应的文字标签,从而使得数据的展示更加直观。通过 Stata 中的 label define
和 label value
命令 ([D] label),我们可以方便地为数字变量添加标签。
例如,假设我们有一个代表满意度的类别变量,该变量的数值范围从 1 到 5,分别代表不同的满意度级别:1 - 很好
、2 - 较好
、3 - 中等
、4 - 较差
、5 - 很差
。通过这种方式,数据的含义变得更加清晰易懂。
示例
假设我们使用 Stata 内置的 auto.dta
数据集,其中有一个变量 rep78
代表某些汽车的维修评级。我们可以通过以下命令为该变量定义数字与文字之间的映射关系:
sysuse "auto.dta", clear
label define rep78 1 "很好" 2 "较好" 3 "中等" 4 "较差" 5 "很差"
label value rep78 rep78
browse rep78
执行上述命令后,rep78
变量的数值将以文字形式显示。例如,原本的数值 1 会显示为 “很好”,2 显示为 “较好”,以此类推。部分代码解释如下:
label define rep78 1 "很好" 2 "较好" 3 "中等" 4 "较差" 5 "很差"
:这行命令定义了一个标签rep78
,并将数字 1 到 5 分别映射到相应的文字标签。label value rep78 rep78
:这行命令将已定义的标签应用到变量rep78
上,使得该变量的数值显示为对应的文字标签。
5. 列示和查看变量
常用的命令有:
describe
:查看数据概况,包括存贮路径、样本数、变量个数、变量名称和标签等信息 (可以简写为d
)ds
:仅列示变量名称ds, alpha
:按首字母顺序列示变量名称des2
:外部命令,点击蓝色链接可查看类别变量频数分布和数字-文字对应表
sysuse "nlsw88.dta", clear
des
data from /Applications/Stata/ado/base/n/nlsw88.dta
Contains obs: 2,246 NLSW, 1988 extract
vars: 17 1 May 2016 22:52size: 60,642 (_dta has notes)
---------------------------------------------------------------------display value
storage variable name type format label variable label
---------------------------------------------------------------------int %8.0g NLS id
idcode byte %8.0g age in current year
age byte %8.0g racelbl race
race byte %8.0g marlbl married
married byte %8.0g never married
never_married byte %8.0g current grade completed
grade byte %16.0g gradlbl college graduate
collgrad byte %8.0g lives in south
south byte %9.0g smsalbl lives in SMSA
smsa
---------------------------------------------------------------------by: idcode
Sorted
ds
. d collgrad smsa
idcode race never_marr~union hours tenure
industry
age married grade south c_city
occupation wage ttl_exp
ds, alpha
. d race south ttl_exp wage
age collgrad hours industry never_marr~union c_city grade idcode married occupation smsa tenure
des2
命令提供的蓝色链接,点击可查看更详细的数据特征。可以完全替代 des
命令。
其中,value label 下方的蓝色链接点开会显示该变量里分类细分。点击左侧的变量,会显示该变量的频数、占比和累计占比。
6. 查找变量
对大型数据而言,变量数量太多,从右上角的变量窗口浏览查找也不高效。look for
命令可以帮助我们迅速缩小搜寻范围,快速找到目标。下面我们分别用系统自带的 nlsw8.dta 数据集和一个包含 444 个变量的大型数据样本来展示如何快速找到相关的变量:
sysuse nlsw88, clear
.
lookfor age
.
display
storage variable name type format variable label
------------------------------------------------------byte %8.0g age in current year
age float %9.0g hourly wage wage
use d_lookfor, clear
des
data from d_lookfor.dta
Contains obs: 30
vars: 444 1 Nov 2018 14:55size: 65,520
-----------------------------------------------------display
storage variable name type format variable label
-----------------------------------------------------double %12.0g 证券代码
stkcd double %8.0g 会计期间
accper
sgnyea str1 %9s 年度标识
typrep str1 %9s 报表类型
spetre str1 %9s 特殊处理float %9.0g 货币资金
a110101 float %9.0g 短期投资
a110201 float %9.0g 短期投资跌价准备
a110213 float %9.0g 短期投资净额
a110227 float %9.0g 股票投资跌价准备
a110235
【此处省略中间的变量】
v379st str3 %9s 下市原因
----------------------------------------------------by: stkcd accper
Sorted
lookfor "现金流"
display
storage variable name type format variable label
-----------------------------------------------------------double %10.0g 经营活动产生的现金流入小计
d110000 double %10.0g 经营活动产生的现金流出小计
d120000 float %9.0g 经营活动产生的现金流量净额
d100000 float %9.0g 投资活动产生的现金流入小计
d210000 float %9.0g 投资活动产生的现金流出小计
d220000 float %9.0g 投资活动产生的现金流量净额
d200000 double %10.0g 筹资活动产生的现金流入小计
d310000 float %9.0g 筹资活动产生的现金流出小计
d320000 float %9.0g 筹资活动产生的现金流量净额
d300000 float %9.0g 经营活动产生的现金流量净额
d610000
lookfor "报酬"
display
storage variable name type format variable label
----------------------------------------------------------------double %10.0g 董事、监事及高管前三名报酬总额
y1002b double %10.0g 董事前三名报酬总额
y1003b double %10.0g 高管前三名报酬总额
y1005b byte %8.0g 未领取报酬的董事、监事及高管人数
y1101a byte %8.0g 未领取报酬董事人数
y1102a byte %8.0g 未领取报酬监事人数 y1103a
与 look for
相关的另外两个外部命令,同学们可以使用帮助文件 help lookfor_all
、 help findname
,按照自己需要进行了解。