stata小小白stata命令详解

stata命令详解-rename group

2020-02-07  本文已影响0人  Hobbit的理查德

1. 前言

在目前工作中,用stata清洗及分析数据,感觉很顺滑。无奈不少同学因为help文件里的英文望而却步。

带着学习和分享的目的,根据工作经验,给大家整理一些常用以及不太常用但很有用的命令,并对该命令的help文件进行有侧重的详解。

2. 命令及获取

rename group:批量重命名变量名,系统自带命令。(命令还是rename

3. 描述

rename :除了基础的单个变量名的重命名,高阶地,可以批量将多个变量名按照一定的规则进行重命名。

4. 语法

*重命名1个变量
 rename old new [, options1]
 
*重命名多个变量名
rename (old1 old2 ...) (new1 new2 ...) [, options1]

*改变多个变量名大小写
 rename old1 old2 ..., {upper|lower|proper} [options2]
  • [,]:中括号里的为额外选项命令,按需求添加,而添加选项记得加英文逗号,

5. 选项

  • options1:
    • addnumberaddnumber(#):指定在变量名后添加序列数,如果不指定(#),则数从1开始。见举例18
    • renumberrenumber(#):将旧变量名中地数字或者文本替换成序列数,如果不指定(#),则数从1开始。见举例16和17
    • sort:在重命名前,旧变量名按顺序排列。排序发生在添加选项addnumber或者renumber,或者指定一系列变量名为旧变量名或新变量名。见举例15
    • dryrun:不执行重命名,但报告重命名结果。在重命名前建议添加此选项。
    • r:添加该选项,可以将旧变量名和新变量名都存在r()中。
  • options2:
    • upper:将所有变量的变量名的所有字母变成大写。
    • lower:将所有变量的变量名的所有字母变成小写。
    • proper:将所有变量的变量名的首字母大写,其他字母小写。
      • 若要修改Unicode字符,使用字符串函数ustrupper(),ustrlower(),ustrtitle()
    • dryrunr:和options1中相同。

6. 举例

  1. 命令rename的基本功能,单变量重命名
*变量名stat重命名为status
rename stat status
  1. 用括号将多个变量进行重命名
*将变量名stat和inc重命名为status和income
rename (stat inc) (status income)
  1. 变量名相互交换
*变量名v1和v2相互变换
rename (v1 v2) (v2 v1)
  1. 多个变量相互交换,不限制数量
*变量a重命名为b,变量b重命名为c,变量c重命名为a
rename (a b c) (b c a)
  1. 允许保留原变量名
*变量a重命名为c,变量b保留原变量名,变量c重命名为a
rename (a b c) (c b a)
  1. 使用通配符*进行重命名,*在新旧变量名中表示相同字符
*将所有前缀为jan的变量重命名为后缀为1的变量
*例如,janstat重命名为stat1,janinc重命名为inc1
rename jan* *1

*将变量名中带有的前缀jan删除
rename jan* *

*将变量名中带有的后缀jan删除
rename *jan *
  1. 符号?进行批量重命名,?表示匹配1个字符,??表示匹配2个字符,以此类推,而*表示匹配0个或更多个字符
*将所有以jan开头并且后接1个字符的变量重命名为除去jan并以1结尾
*例如,jans重命名为s1,而janstat不变
rename jan? ?1
  1. 新旧变量中可以使用多个通配符*
*将变量名中带有的jan都删除,无论是在前缀,后缀还是中间
*例如,janstat重命名为stat,injanstat重命名为instat,subjan重命名为sub
rename *jan* **

*将变量名中以jan开头,并含有s的变量重命名为去除jan并以1结尾
*例如,janstat重命名为stat1,janest重命名为est1,但janinc不会变为inc1
rename jan*s* *s*1
  1. 旧变量中的通配符*可以多于新变量
*将变量名中jan及其后面所有字符都删除
*例如,statjan重命名为stat,incjan71重命名为inc
rename *jan* *
  1. 新变量中的通配符.可以跳过旧变量中相应的通配符
*将变量名中jan及其前面所有字符删除
*例如,minjaninc重命名为inc
rename *jan* .*
  1. 通配符=指代原变量名,即在原变量名基础上进行批量增加字符
*将变量名中以pop结尾的变量重命名为添加以jan开头的变量名
*例如,age1pop重命名为janage1pop
rename *pop jan=

*将变量status重命名为admitstatus,bp重命名为admitbp,time重命名为admittime
rename (status bp time) admit=

*将任意指定的变量(whatever)都添加前缀pre
rename whatever pre=

*将任意指定的变量(whatever)都添加后缀jan
rename whatever =jan

*将任意指定的变量(whatever)都添加前缀pre和后缀fix
rename whatever pre=fix
  1. #类似*,但是,指代的是数字
*将v1重命名为stat1,v2重命名为stat2,……,v10重命名为stat10
*即将非数字部分重新替换
rename v# stat#
  1. (#)指代的是1个数字,(##)指代的是2个数字,以此类推,最多10个#
*变量名中v+1个数字的变量重命名为stat+该数字,若v+2个数字则不变
*例如,v1重命名为stat1,v2重命名为stat2……,但不重命名v10
rename v(#) stat(#)

*变量名中v+2个数字的变量重命名为stat+该2个数字,若v+1个数字则不变
*例如,v01重命名为stat01,v02重命名为stat02……,v10重命名为stat10……,但不重命名v1,v2,v3,v100……
rename v(##) stat(##)
  1. #,(#),(##)可结合使用
*变量v1重命名为v01,v2重命名为v02,……,v10重命名为v10,v100依然为v100,v101依然为v101
rename v# v(##)

*变量v01重命名为v1,v02重命名为v2,……,v10依然为v10,不重名v001
rename v(##) v(#)

*变量stat10重命名为stat_2010,stat11重命名为stat_2011,……但不重名stat1,stat2……
rename stat(##) stat_20(##)

*变量stat1重命名为stat_2001,stat2重命名为stat_2002,……但不重名stat10或stat_2010……
rename stat(#) stat_20(#)
  1. 可以混合使用多种语法
*将3个v+数字的变量分别重命名为a,b,c,旧变量得有3个符合规则的变量,不然,会报错
*例如,旧变量中有3个变量按顺序分别为v1,v10,v2,分别重命名为a,b,c
rename v# (a b c)

*将旧变量中的3个v+数字的变量先排序,再重命名为a,b,c
*例如,旧变量中有3个变量按顺序分别为v1,v10,v2,分别重命名为a,c,b
rename v# (a b c),sort

*将旧变量中的3个v开头的变量先排序,再重命名为a,b,c
*例如, valpha,vbeta,vgamma重命名为a,b,c,与旧变量在数据的顺序无关
rename v* (a b c),sort
  1. 添加选项renumber,可指定重新排序的数字
*旧变量中有v9,v10,v8,……,按顺序重命名为v1,v2,v3……
rename v# v#, renumber

*旧变量中有v9,v10,v8,……,重命名为v2,v3,v1,……,sort选项效果见15
rename v# v#, renumber sort

*旧变量中有v9,v10,v8,……,重命名为v11,v12,v10,……,即新变量的数字从10开始
rename v# v#, renumber(10) sort
  1. 新变量中的#可指代旧变量中的*,?,#,(#),(##)
*旧变量中有valpha, vgamma, vbeta,……,按顺序重命名为v1,v2,v3,……
rename v* v#, renumber

*旧变量中有valpha, vgamma, vbeta,……,重命名为v1,v3,v2,……
rename v* v#, renumber sort

*#对应*,janstat重命名为stat1, febstat重命名为stat2,……
rename *stat stat#, renumber

*janstat重命名为stat01, febstat重命名为stat02,……
rename *stat stat(##), renumber

*janstat重命名为stat0, febstat重命名为stat1,……
rename *stat stat#, renumber(0)

*aprstat重命名为stat1, augstat重命名为stat2,……
rename *stat stat#, renumber sort
  1. 选项addnumber,添加序列数,新变量中的通配符数量要多于旧变量,多出来的通配符得是#,(#),(##)……
*将变量a,b,c分别重命名为v1,v2,v3
rename (a b c) v#, addnumber
  1. 下标的使用,下标表示第几个通配符,例如,原变量为*_#_#,所以,[1]指代*, [2] 指代第1个#, [3] 指代最后的#
*a12重命名为a21, a13重命名为a31, a14重命名为a41, ..., a21重命名为a12, ……
rename a(#)(#) a(#)[2](#)[1]

*替换前缀和后缀; bpstata重命名为astatbp, rstater重命名为erstatr, ……
rename *stat* *[2]stat*[1]

*同上
rename *stat* *[2]stat*

*v1a1重命名为v1_1_a1, v1a2重命名为v1_1_a2, ..., v2a1重命名为v2_2_a1, ……
rename v#a# v#_#[1]_a#[2]
说明符 旧变量中的含义
* 0或多个字符
? 1个字符
# 1个或多个数字
(#) 1个数字
(##) 2个数字
(###) 3个数字
……
(##########) 10个数字
说明符 对应旧变量中的 新变量中的含义
* *,?, #, (#), ... 复制对应的文本
? ? 复制1个字符
# #, (#), ... 复制原来的数字
(#) #, (#), ... 重新格式化为1个或多个数字
(##) #, (#), ... 重新格式化为2个或多个数字
……
(##########) #, (#), ... 重新格式化为10个数字
. *,?, #, (#), ... 跳过
= 复制整个变量名

7. 菜单

Data > Data utilities > Rename groups of variables

8. 存储的结果

rename默认不存储结果,但加上选项r,可存储以下结果:

单量:r(r):重命名的变量数

暂元:

r(oldnames):旧的所有变量名

r(newnames):新的所有变量名

上一篇下一篇

猜你喜欢

热点阅读