分享

批量改名:Stata变量名称变身大法

 liyu_sun 2021-05-09


🎦 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,clear
renvarlab  make , u
renvarlab   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

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多