从变量名中删除中间字符

时间:2014-09-24 12:58:45

标签: stata

我的变量名以下划线结尾,后跟年份代码。

例如,我有以下内容:

age_58 age_64 age_75 age_84 age_93

我想将它们重命名为:

age58 age64 age75 age84 age93

如何一次从所有变量名中删除_

我正在使用Stata版本11。

3 个答案:

答案 0 :(得分:23)

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

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

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 |
     +----------------------------------------------------------------------+

rename *_# *#

list

     +----------------------------------------------------------------------+
     |     age58       age64       age75      age184      age93       age99 |
     |----------------------------------------------------------------------|
  1. |  .1162236   -.8781271    1.199268   -1.475732   .9077238   -.0858719 |
     +----------------------------------------------------------------------+

键入help rename group,以获取各种可用说明符的详细信息。

答案 1 :(得分:17)

对于Stata 8而言,社区贡献的命令import builtins import collections.abc def isiteratorclass(obj): if not isinstance(obj, type): return False return issubclass(obj, collections.abc.Iterator) [key for key, value in vars(builtins).items() if isiteratorclass(value)] # --> ['enumerate', 'filter', 'map', 'reversed', 'zip'] 提供了一种解决方案:

renvars

有关文档和下载,请参见

renvars age_*, subst(_)

有关2001年的论文,请参见此FHTMitchell

答案 2 :(得分:9)

创建一些示例数据:

clear 
set obs 10
foreach var in age_58 age_64 age_75 age_84 age_93 age99 {
    gen `var' = rnormal()
}

删除下划线:

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