批量改名:Stata变量名称变身大法
🎦 2021 效率分析专题
📅 2021 年 5.15-16;5.21-22
🔑 主讲:龚斌磊(浙江大学);连玉君(中山大学);张宁(山东大学)
New!
lianxh
命令发布了: GIF 动图介绍
随时搜索 Stata 推文、教程、手册、论坛,安装命令如下:
. ssc install lianxh
作者: 冷萱(西南财经大学)
邮箱: lx@smail.swufe.edu.cn
目录
1. 背景介绍
2. renvarlab 命令介绍
3. renvarlab 命令的选项
3.1 变量标签:label 选项
3.2 大小写:upper 与 lower 选项
3.3 批量重命名前缀和后缀:prefix(str) 与 postfix(str) 选项
3.4 变量名关键词替换:subst(str1 str2) 选项
3.5 掐头去尾:predrop(#) 与 postdrop(#) 选项
3.6 一刀切:trim(#) 与 trimend(#) 选项
4. 命令汇总
5. 相关推文
温馨提示: 文中链接在微信中无法生效。请点击底部「阅读原文」。或直接长按/扫描如下二维码,直达原文:
1. 背景介绍
数据清理是实证研究过程中最为繁琐的一步,不起眼的变量命名工作都够折腾许久。我们经常需要对 Stata 数据集中的变量进行重命名,一种简单的方式是使用 rename
进行重命名。一般而言,rename
可以满足我们重命名变量的需求,具体用法可以 help rename
。
但是,数据清理过程中总会遇到千奇百怪的问题,比如我们想把变量的 name 替换为变量的 label,我们想对某些变量 name 批量的加上一些前缀,我们也想对变量中 name 中特定字符进行替换,那么 renvarlab
这个命令能满足我们上述的所有需求。
2. renvarlab 命令介绍
安装 renvarlab
:
ssc install renvarlab, replace
在成功安装后,输入 help renvarlab
可以查看具体使用语法:
Syntax renvarlab [varlist] \ newvarlist [ , display test label ] renvarlab [varlist] , transformation_option [ display test symbol(str) label] renvarlab [varlist] , label [ display test ] where transformation_option is one of
upper lower prefix(str) postfix(str) (synonym suffix(str)) presub(str1 str2) postsub(str1 str2) subst(str1 str2) predrop(#) postdrop(#) trim(#) trimend(#) map(string exp)
上述语法中,以下这条与 rename
功能一致,可以直接修改变量名称。需要注意的是,rename
通过 ()
将修改前后的变量名分别括起来,而 renvarlab
通过\
将修改前后的变量名分开。
renvarlab [varlist] \ newvarlist [ , display test label ]
以下这条使用方法是 renvarlab
特有的更改变量名称。通过在,
后面添加 label 选项,则可以直接将变量的名称替换为变量的标签。
renvarlab [varlist] , label [ display test ]
3. renvarlab 命令的选项
本文的重点是介绍 renvarlab
命令的选项,希望通过阅读本文后,抛弃rename
,使用 renvarlab
。
3.1 变量标签:label 选项
上一节简要概括了 labbel 选项的功能及使用方法,label 选择的功能主要是将变量名称替换为变量标签,可以批量操作。如果有单个或多个变量名称需要更改,则在,
前输入需要更换的变量名即可,如果对所有变量进行更换,则可以默认不输入任何变量名称。具体用法如下:
sysuse auto,clear
renvarlab make , lab
renvarlab price mpg rep78 , lab
renvarlab , lab
上述命令分别实现将 make 替换为对应标签;将 price mpg rep78 替换为对应标签;将所有变量名称替换为对应标签。
3.2 大小写:upper 与 lower 选项
这一选项的用法与 rename
一致,将变量名转换为大写或小写。一般而言,lower
选项更为常见,将变量名由大写全部转换为小写字母。具体用法如下:
sysuse auto,clearrenvarlab make , urenvarlab MAKE , l
上述选项中,u
和 l
分别是upper
与 lower
的简写。
3.3 批量重命名前缀和后缀:prefix(str) 与 postfix(str) 选项
这两个选项分别是在变量名称前和变量名称后添加特定的字符,str
可以替换为符合变量命名规则的字符(即变量名不能数字 开头)。这一选项的好处在于,实证分析中可能存在多类别的变量名,比如个体层面,家庭层面和城市层面。为了便于区分,我们可以在个体层面的变量名前面统一添加前缀 ind_
,在家庭层面变量名前统一添加前缀 fam_
,在城市层面变量名前统一添加前缀 city_
。具体用法如下:
sysuse auto,clear
renvarlab make price mpg , prefix(ind_)
renvarlab rep78 headroom trunk , prefix(fam_)
renvarlab weight length turn displacement gear_ratio foreign , prefix(city_)
3.4 变量名关键词替换:subst(str1 str2) 选项
subst(str1 str2)
选项的含义是将变量名中的 str1
替换为 str2
。比如我们想把名称为 log_income,log_consumption 和 log_wage 的变量名替换为 ln_income,ln_consumption 和 ln_wage,则可以进行如下操作:
renvarlab log_income log_consumption log_wage,subs(log ln)
与 subst(str1 str2)
选项可能同时出现的是 presub(str1 str2)
和 postsub(str1 str2)
选项。
subst(str1 str2)
是指将变量名中所有的str1
均替换为str2
。而
presub(str1 str2)
是指将变量名第一次出现的str1
替换为str2
。postsub(str1 str2)
是指将变量名最后一次出现的str1
替换为str2
。str2
可以为空,即删除str1
。
3.5 掐头去尾:predrop(#) 与 postdrop(#) 选项
predrop(#)
与 postdrop(#)
选项含义是将变量名中的前(后)几个字符删除。比如我们想把变量名 update_age,update_male 改变为 age 和 male,则可以使用 predrop(#)
选项,当然也可以使用上一节提到的 subst(str1 str2)
。两个选项使用的具体命令如下:
renvarlab update_age update_male,predrop(7)
renvarlab update_age update_male,subst(update_ )
与 predrop(#)
对应的是 postdrop(#)
。其用法一致,后者表示删除变量名最后几位字符。
3.6 一刀切:trim(#) 与 trimend(#) 选项
trim(#)
与 trimend(#)
选项含义是仅保留变量名的前(后) #
个字符。这一选项在实践中使用可能较少,因为我们难以保证每个变量名称字符一样。当然某些情况也可以使用,比如我们想把 v1_ndein v2_eds3 v3sd v4_dcldifc v5_nc 替换为 v1 v2 v3 v4 v5,则可以使用 trim(#)
选项,具体用法如下:
renvarlab v1_ndein v2_eds3 v3sd v4_dcldifc v5_nc, trim(2)
4. 命令汇总
ssc install renvarlab,replace
sysuse auto,clear
renvarlab make , lab
renvarlab price mpg rep78 , lab
renvarlab , lab
sysuse auto,clear
renvarlab make , u
renvarlab MAKE , l
sysuse auto,clear
renvarlab make price mpg , prefix(ind_)
renvarlab rep78 headroom trunk , prefix(fam_)
renvarlab weight length turn displacement gear_ratio foreign , prefix(city_)
*以下命令缺少原始数据,无法成功运行
renvarlab log_income log_consumption log_wage,subs(log ln)
renvarlab update_age update_male,predrop(7)
renvarlab update_age update_male,subst(update_ )
renvarlab v1_ndein v2_eds3 v3sd v4_dcldifc v5_nc ,trim(2)
5. 相关推文
Note:产生如下推文列表的 Stata 命令为:
lianxh 普林斯顿 CFPS labone
安装最新版lianxh
命令:
ssc install lianxh, replace