Stata数据处理:批量重命名变量的技巧-rename
👇 连享会 · 推文导航 | www.lianxh.cn
🍎 Stata:Stata基础 | Stata绘图 | Stata程序 | Stata新命令 📘 论文:数据处理 | 结果输出 | 论文写作 | 数据分享 💹 计量:回归分析 | 交乘项-调节 | IV-GMM | 时间序列 | 面板数据 | 空间计量 | Probit-Logit | 分位数回归 ⛳ 专题:SFA-DEA | 生存分析 | 爬虫 | 机器学习 | 文本分析 🔃 因果:DID | RDD | 因果推断 | 合成控制法 | PSM-Matching 🔨 工具:工具软件 | Markdown | Python-R-Stata 🎧 课程:公开课-直播 | 计量专题 | 关于连享会
连享会 · 2022 空间计量专题
连享会 · 2022 面板数据因果推断专题
作者:梁淑珍 (华侨大学)
邮箱:13514084150@163.com
温馨提示: 文中链接在微信中无法生效。请点击底部「阅读原文」。或直接长按/扫描如下二维码,直达原文:
目录
1. 引言
2. rename 批量重命名
2.1 圆括号与批量重命名
2.2 通配符与批量重命名
3. rename 命令选项
4. 实例应用
5. 相关推文
1. 引言
变量重命名是实证分析中的必要操作。当然,如果仅仅是单变量的重命名,直接使用命令语句 rename var1 var2
即可。但是,如果情况稍加复杂,比如同时重命名十几个甚至更多变量,工作量就会变的非常大,此时就很有必要掌握批量重命名的技巧了。
2. rename 批量重命名
2.1 圆括号与批量重命名
rename (old1 old2 ...) (new1 new2 ...) [,options]
将需要批量重命名的变量放置在第 1 对圆括号中,新的变量名放置在第 2 对圆括号中,这个操作方法比较简单粗暴,主要有以下几种应用场景:
* 将 stat 重命名成 status,inc 重命名成 income,equ 重命名成 equity
rename (stat inc equ) (status income equity)
* 交换 v1 和 v2 的变量名
rename (v1 v2) (v2 v1)
* 将变量名大写 (还可以使用小写 lower,首字母大写 proper)
rename a b c, upper
2.2 通配符与批量重命名
首先了解一下在重命名过程中可能使用到的几个通配符:
*
:表示任意多个字符;?
:表示 1 个字符;#
:表示 1 位或多位数字,其中(#)
表示 1 位数字,(##)
表示 2 位数字,以此类推。
接下来通过代码来了解一下 rename
和通配符的组合使用:
* 把前缀为 jan 的变量全部重命名为后缀为 1 的变量名,如 janstat → stat1
rename jan* *1
* 去掉 jan 前缀
rename jan* *
* 去掉 jan 后缀
rename *jan *
* 将前缀为 jan 的四位字符重命名为后缀为 1 的两位字符,如 jans → s1,janstat 不会发生变化
rename jan? ?1
* 删除 jan,如 janstat 重命名为 stat,injanstat → instat,subjan → sub
rename *jan* **
* 命名为 jan 前的字符,如 injanstat → in,statjan → stat
rename *jan* *
* 命名为 jan 后的字符,如 injanstat → stat
rename *jan* .*
* 为后缀为 pop 的变量名增加前缀 jan,如 age1pop → janage1pop
rename *pop jan=
* 所有变量增加前缀 pre
rename whatever pre=
* 所有变量增加后缀 jan
rename whatever =jan
* 所有变量增加前缀 pre 且增加后缀 fix
rename whatever pre=fix
* 将由字母 v+ 数字的变量名重命名为 stat+ 数字,如 v1→stat1
rename v# stat#
* 增加括号后表示重命名 v 后面跟 1 位数字的变量,v10 不会被重命名
rename v(#) stat(#)
* stat10 → stat_2010,stat2 不会发生改变
rename stat(##) stat_20(##)
* stat1 → stat_2001,stat10 不会发生改变
rename stat(#) stat_200(#)
* 重命名为倒序变量名,如 v8 → v1,v7 → v2,v6 → v3
rename v# v#, renumber sort
* 数字起始值 10,如 v1 → v10,v2 → v11
rename v# v#, renumber(10)
* a → v1,b → v2,c → v3
rename (a b c) v#, addnumber
* a12 → a21,a32 → a23
rename a(#)(#) a(#)[2](#)[1]
3. rename 命令选项
addnumber
:在末尾添加顺序编号;addnumber(#)
:在末尾添加指定起始值的顺序编号;renumber
:按顺序重新编号;renumber(#)
:指定起始值开始顺序编号;sort
:编号前进行排序;dryrun
:报告但不进行重命名;r
:将变量名储存在r()
中,编程时调用;upper
:将字母转换为大写;lower
:将字母转换为小写;proper
:将字母转换为首字母大写。
4. 实例应用
. clear
. * 随意生成几个以 number 开头的变量
. set obs 1
. forval i = 8/12{
2. gen num`i'=_n
3. }
. list, noobs
+-------------------------------------+
| num8 num9 num10 num11 num12 |
|-------------------------------------|
| 1 1 1 1 1 |
+-------------------------------------+
. * 将这些变量更改为首字母大写
. rename *, proper
. list, noobs
+-------------------------------------+
| Num8 Num9 Num10 Num11 Num12 |
|-------------------------------------|
| 1 1 1 1 1 |
+-------------------------------------+
. * 将 Num8 重命名为 Num_2008
. rename Num(##) Num_20(##)
. rename Num(#) Num_200(#)
. list, noobs
+------------------------------------------------------+
| Num_2008 Num_2009 Num_2010 Num_2011 Num_2012 |
|------------------------------------------------------|
| 1 1 1 1 1 |
+------------------------------------------------------+
. * 将年份重新以数字 5 为基准重新编码
. rename Num_# Num_#, renumber(5)
. list, noobs
+---------------------------------------+
| Num_5 Num_6 Num_7 Num_8 Num_9 |
|---------------------------------------|
| 1 1 1 1 1 |
+---------------------------------------+
. * 在 Num 后增加 ber 后缀
. rename Num_# Number_#
. list, noobs
+------------------------------------------------------+
| Number_5 Number_6 Number_7 Number_8 Number_9 |
|------------------------------------------------------|
| 1 1 1 1 1 |
+------------------------------------------------------+
. * 去掉后缀 ber
. rename *ber_# *_#
. list, noobs
+---------------------------------------+
| Num_5 Num_6 Num_7 Num_8 Num_9 |
|---------------------------------------|
| 1 1 1 1 1 |
+---------------------------------------+
. * 使用圆括号命名前三个变量
. rename (Num_5 Num_6 Num_7) (一 二 三)
. list, noobs
+------------------------------+
| 一 二 三 Num_8 Num_9 |
|------------------------------|
| 1 1 1 1 1 |
+------------------------------+
. * 为汉字增加数字后缀
. rename (一 二 三) num#, addnumber
. list, noobs
+------------------------------------+
| num1 num2 num3 Num_8 Num_9 |
|------------------------------------|
| 1 1 1 1 1 |
+------------------------------------+
5. 相关推文
Note:产生如下推文列表的 Stata 命令为:
lianxh 批量, m
安装最新版lianxh
命令:
ssc install lianxh, replace
专题:数据处理 Stata数据处理:批量处理被保护的年鉴数据-dxls-txls rename-renvarlab:Stata变量名称批量改名-重命名 Stata:为无规则命名的文件批量创建同名文件夹 Stata中文乱码转码顽疾解决方法-批量转换 专题:回归分析 Stata因子变量:虚拟变量-交乘项批量处理 专题:空间计量 Stata:批量获取经纬度数据-空间计量 专题:Python-R-Matlab Python+Stata:批量制作个性化结业证书 Python: 批量爬取下载中国知网(CNKI) PDF论文
课程推荐:面板数据因果推断
主讲老师:徐轶青 (斯坦福大学)
🍓 课程主页:https://gitee.com/arlionn/Course
New! Stata 搜索神器:
lianxh
和songbl
GIF 动图介绍
搜: 推文、数据分享、期刊论文、重现代码 ……
👉 安装:
. ssc install lianxh
. ssc install songbl
👉 使用:
. lianxh DID 倍分法
. songbl all
🍏 关于我们
连享会 ( www.lianxh.cn,推文列表) 由中山大学连玉君老师团队创办,定期分享实证分析经验。 直通车: 👉【百度一下: 连享会】即可直达连享会主页。亦可进一步添加 「知乎」,「b 站」,「面板数据」,「公开课」 等关键词细化搜索。