Stata 从变量名中删除中间字符

Stata 从变量名中删除中间字符,stata,Stata,我的变量名以下划线(\uu)结尾,后跟年份代码: clear set obs 1 foreach var in age_58 age_64 age_75 age_184 age_93 age99 { generate `var' = rnormal() } list +----------------------------------------------------------------------+ | age_58 age_64

我的变量名以下划线(
\uu
)结尾,后跟年份代码:

clear 
set obs 1

foreach var in age_58 age_64 age_75 age_184 age_93 age99 {
    generate `var' = rnormal()
}

list
     +----------------------------------------------------------------------+
     |    age_58      age_64      age_75     age_184     age_93       age99 |
     |----------------------------------------------------------------------|
  1. |  .1162236   -.8781271    1.199268   -1.475732   .9077238   -.0858719 |
     +----------------------------------------------------------------------+
我想将它们重命名为:

age58 age64 age75 age184 age93 age99
我知道我可以通过一次重命名一个变量来实现这一点,如下所示:

rename age_58 age58
rename age_64 age64
rename age_75 age75
rename age_184 age184
rename age_93 age93

如何一次从所有变量名中删除下划线?

您可以使用宏扩展函数
subinstr
循环变量:

foreach var of varlist * {
    local newname : subinstr local var "_" "", all
    if "`newname'" != "`var'" {
        rename `var' `newname'
    }
}

在Stata 13和更高版本中,可以使用内置命令
rename
在一行中完成此操作

只需指定相关规则,其中可以包括通配符:

rename *_# *#

list

     +----------------------------------------------------------------------+
     |     age58       age64       age75      age184      age93       age99 |
     |----------------------------------------------------------------------|
  1. |  .1162236   -.8781271    1.199268   -1.475732   .9077238   -.0858719 |
     +----------------------------------------------------------------------+
键入
help rename group
了解各种可用说明符的详细信息。

对于Stata 8 up,社区贡献的命令
renvars
提供了一个解决方案:

renvars age_*, subst(_)
有关文档和下载,请参阅

. search renvars, historical

Search of official help files, FAQs, Examples, SJs, and STBs

SJ-5-4  dm88_1  . . . . . . . . . . . . . . . . .  Software update for renvars
        (help renvars if installed) . . . . . . . . .  N. J. Cox and J. Weesie
        Q4/05   SJ 5(4):607
        trimend() option added and help file updated

STB-60  dm88  . . . . . . . .  Renaming variables, multiply and systematically
        (help renvars if installed) . . . . . . . . .  N. J. Cox and J. Weesie
        3/01    pp.4--6; STB Reprints Vol 10, pp.41--44
        renames variables by changing prefixes, postfixes, substrings,
        or as specified by a user supplied rule
2001年的论文,见此