批量改名: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

上述选项中,ul 分别是upperlower 的简写。

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

(0)

相关推荐

  • 数据转置pro之sxpose2

    本文作者:崔赵雯,中南财经政法大学金融学院本文编辑:陈丹慧技术总编:余术玲爬虫俱乐部云端课程爬虫俱乐部于2020年暑期在线上举办的Stata与Python编程技术训练营和Stata数据分析法律与制度专 ...

  • Stata结果输出:tabout命令详解

    Stata结果输出:tabout命令详解

  • Stata中变量观测值的亲密伙伴——levelsof命令

    导读 前段时间我们爬虫俱乐部的Stata学员群有学员问了这样的一个问题: 虽然帮助这位学员解决了这个问题,但是我一时竟想不起来如何向他展示正确结果.只能用最原始直白的方法--截图,以图为证.在征求那位 ...

  • 下列哪些可以作为 SPSS 的有效变量名称 ( CD ) A. 123 B. 地 址 C. city D. 性别

    下列哪些可以作为 SPSS 的有效变量名称 (  CD  ) A. 123        B. 地 址        C. city        D. 性别

  • 如何批量提取工作表名称

    如何将工作簿中的所有工作表名称批量提取出来呢? 这里有两种方法: 一.专业法 第一步:点击公式--定义名称,在开的界面中定义好名称,比如"名称",在引用位置中输入公式=MID(GE ...

  • CAD图块如何批量改名

    今天在制作自己的图块库的时候需要把图块重命名一下,图块非常多,一个一个重命名非常麻烦,如何批量重命名? 比如这里有16个图块: 这里利用源泉设计进行批量重命名,安装和下载就不说了,见链接:https: ...

  • 就任性!批量更改工作表名称

    今天和大家分享的VBA小代码内容是-- 呃,对了,先说个事,之前给大家分享的一键提取工作表名称并建立超链接的小代码,不知道大家还记得吗?VBA常用小代码:一键生成带超链接的工作表目录 您问我为啥突然问 ...

  • VBA常用小代码:就任性!一键批量更改工作表名称~

    照例举个例子,如下图的A列所示,工作表名是一些可爱家伙. 现在,我们想把工作表名称,根据E:F列的匹配信息,修改为如下形式,部门-人名: (栗子里表名修改的规则,就是依照E:F的信息,在每个人名前增加 ...

  • 让效率飞起来!Excel批量修改工作表名称。

    Excel按A列数据批量修改表名称!微信公众号 Excel情报局昨日高效技能温故知新:Excel表格一拆多,小问题大智慧!Excel图片随单元格隐藏!Excel单元格内容批量复制到合并单元格,超越职场 ...

  • 1分钟批量更改1000张图片名称,强烈推荐Excel这个命令!

    如何批量批改图片的文件名?有哪位伙伴知道的吗? 当你要给一个班级的学生制作学生证或者给公司一批刚入职的员工制作证件照时,因为图片跟人名要对的上,这时候一个一个修改很麻烦,有什么快速可以批量修改的方法吗 ...

  • 练习R语言:ls()函数列出变量名称

    ‍‍ 有一些数据集它的变量名称很长,在统计时如果要全写变量名是比较费劲的.如果能先列出变量名称,那是不是可以直接复制粘贴? ls()函数可以很方便的罗列某个数据集的变量名称. 比如iris鸢尾花数据, ...

  • 完美!这个SOLIDWORKS零部件批量改名方法,解决你的大烦恼

    完美!这个SOLIDWORKS零部件批量改名方法,解决你的大烦恼