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 // 大写
renvars hea wei len, prefix(d1_)
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
Contains data from /Applications/Stata/ado/base/n/nlsw88.dta
obs: 2,246 NLSW, 1988 extract
vars: 17 1 May 2016 22:52
size: 60,642 (_dta has notes)
---------------------------------------------------------------------
storage display value
variable name type format label variable label
---------------------------------------------------------------------
idcode int %8.0g NLS id
age byte %8.0g age in current year
race byte %8.0g racelbl race
married byte %8.0g marlbl married
never_married byte %8.0g never married
grade byte %8.0g current grade completed
collgrad byte %16.0g gradlbl college graduate
south byte %8.0g lives in south
smsa byte %9.0g smsalbl lives in SMSA
---------------------------------------------------------------------
Sorted by: idcode
. ds
idcode race never_marr~d collgrad smsa
industry union hours tenure
age married grade south c_city
occupation wage ttl_exp
. ds, alpha
age collgrad hours industry never_marr~d race south ttl_exp wage
c_city grade idcode married occupation smsa tenure uniondes2命令提供的蓝色链接,点击可查看更详细的数据特征。可以完全替代 des 命令。

其中,value label 下方的蓝色链接点开会显示该变量里分类细分。点击左侧的变量,会显示该变量的频数、占比和累计占比。
6. 查找变量
对大型数据而言,变量数量太多,从右上角的变量窗口浏览查找也不高效。look for 命令可以帮助我们迅速缩小搜寻范围,快速找到目标。下面我们分别用系统自带的 nlsw8.dta 数据集和一个包含 444 个变量的大型数据样本来展示如何快速找到相关的变量:
. sysuse nlsw88, clear
. lookfor age
storage display
variable name type format variable label
------------------------------------------------------
age byte %8.0g age in current year
wage float %9.0g hourly wageuse d_lookfor, clear
des
Contains data from d_lookfor.dta
obs: 30
vars: 444 1 Nov 2018 14:55
size: 65,520
-----------------------------------------------------
storage display
variable name type format variable label
-----------------------------------------------------
stkcd double %12.0g 证券代码
accper double %8.0g 会计期间
sgnyea str1 %9s 年度标识
typrep str1 %9s 报表类型
spetre str1 %9s 特殊处理
a110101 float %9.0g 货币资金
a110201 float %9.0g 短期投资
a110213 float %9.0g 短期投资跌价准备
a110227 float %9.0g 短期投资净额
a110235 float %9.0g 股票投资跌价准备
【此处省略中间的变量】
v379st str3 %9s 下市原因
----------------------------------------------------
Sorted by: stkcd accper
lookfor "现金流"
storage display
variable name type format variable label
-----------------------------------------------------------
d110000 double %10.0g 经营活动产生的现金流入小计
d120000 double %10.0g 经营活动产生的现金流出小计
d100000 float %9.0g 经营活动产生的现金流量净额
d210000 float %9.0g 投资活动产生的现金流入小计
d220000 float %9.0g 投资活动产生的现金流出小计
d200000 float %9.0g 投资活动产生的现金流量净额
d310000 double %10.0g 筹资活动产生的现金流入小计
d320000 float %9.0g 筹资活动产生的现金流出小计
d300000 float %9.0g 筹资活动产生的现金流量净额
d610000 float %9.0g 经营活动产生的现金流量净额
lookfor "报酬"
storage display
variable name type format variable label
----------------------------------------------------------------
y1002b double %10.0g 董事、监事及高管前三名报酬总额
y1003b double %10.0g 董事前三名报酬总额
y1005b double %10.0g 高管前三名报酬总额
y1101a byte %8.0g 未领取报酬的董事、监事及高管人数
y1102a byte %8.0g 未领取报酬董事人数
y1103a byte %8.0g 未领取报酬监事人数与 look for 相关的另外两个外部命令,同学们可以使用帮助文件 help lookfor_all、 help findname,按照自己需要进行了解。