rename group批量修改变量名
本文作者:王碧琪
文字编辑:张馨月
技术总编:李朋冲
大家在进行数据处理时经常需要给变量重命名,那么如果想要批量修改变量名,该如何操作呢?在之前的推文《rename命令用法一览》中,小编已向大家介绍了rename的基础用法,今天我们就来继续玩转rename,实现变量名的批量修改。
*可以代替任意多个任意字符。我们来对以下变量名称进行操作:
clear
input float(x_102_a y_102_a z_102_a u_102_a v_102_a )
1 2 3 4 5
end
1)单个*的使用:
如果想把后缀a改为b,可进行如下操作:
rename *a *b,d //把变量名中的a变成b;d是dryrun的缩写,表示只给出报告,而不真正改变变量名
结果如下:
2)多个*的使用:
如果我们想把102换成101,可继续使用通配符*,在102左右两侧分别用*来替代一个或者多个字符:
rename *102* *101*,d //把变量名中的102换成101
结果如下:
#可代表一个或者多个数字。其中(#)代表一位数字,(##)代表两位数字,以此类推。我们在数据集中创建如下几个变量:
clear
input float(v11 v12 v13 v1a1 v1a2 v2a1 v2a2)
1 2 3 1 2 3 4
end
1)数字调序
我们想要把变量名v11,v12,v13后面的两个数字调换位置,可以用(#)来代表一位数字,然后进行调序处理:
rename v(#)(#) v(#)[2](#)[1] ,d //把两数字的位置调换,[1][2]分别代表在第一个位置和第二个位置的数字
这是对数字通配符的单次调用。值得注意的是,对于v11,进行重命名之后没有发生改变,rename依然可以执行。
rename v(#)a(#) v(#)[1]_(#)[1]a(#)[2],d //多次调用
renumber是rename的一个option,可以实现用自然数替换变量名中的数字或者文本,默认从1开始,依次增大。如果在()内标记起始数字,则从该数字开始依次增大。我们来看下面这个例子:
clear
input float(v1 v2 v3 v4 v5)
1 2 3 4 5
end
我们想要实现把v1-v5中的v改为state,可以借助该选项:
rename v# state#, renumber d
更通常的情况下,我们想把1-5改成从2010开始以表示年份,可借助以下命令:
rename v# state#, renumber(2010) d //把v1-v5批量改为state2010-state2014
addnumber是rename的另一个选项,使用方法与renumber类似,也可在变量名的基础上增加自然数并在()内标注起始数字。例子如下:
clear
input float(edu exp promo)
1 2 3
end
rename (edu exp promo) v#,addnumber d //在变量名后面加上从1开始的连续自然数
rename (edu exp promo) v#,addnumber(2010) d //在变量名后面加上从2010开始的连续自然数
今天的介绍就到这里。通过使用rename,我们可以按照自己的需求批量设置变量名称,代替重复的手工操作。关于该命令更为详细的介绍,大家也可以通过help rename group来了解,快来试试吧~
关于我们
微信公众号“Stata and Python数据分析”分享实用的stata、python等软件的数据处理知识,欢迎转载、打赏。我们是由李春涛教授领导下的研究生及本科生组成的大数据处理和分析团队。
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。