-2

I have variable names ending with an underscore (_), followed by a year code:

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

I would like to rename them into:

age58 age64 age75 age184 age93 age99

I know I can do this by renaming one variable at a time as follows:

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

How can I remove the underscore from all the variable names at once?

3 Answers3

6

In Stata 13 and later versions, this can be done in one line using the built-in command rename.

One merely has to specify the relevant rules, which can include wildcard characters:

rename *_# *#

list

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

Type help rename group for details on the various available specifiers.

2

You can loop over the variables using the macro extended function subinstr:

foreach var of varlist * {
    local newname : subinstr local var "_" "", all
    if "`newname'" != "`var'" {
        rename `var' `newname'
    }
}
Maarten Buis
  • 2,684
  • 12
  • 17
2

For Stata 8 up, the community-contributed command renvars offers a solution:

renvars age_*, subst(_)

For documentation and download, see

. 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

For the 2001 paper, see this .pdf file.

Nick Cox
  • 35,529
  • 6
  • 31
  • 47