Statalist The Stata Listserver


[Date Prev][Date Next][Thread Prev][Thread Next][Date index][Thread index]

st: RE: Renaming varnames


From   "Thomas Speidel" <[email protected]>
To   <[email protected]>
Subject   st: RE: Renaming varnames
Date   Wed, 25 Jan 2006 14:43:51 -0700

Didn't know about renvars.  All my variables (44) have underscores.
Nick, your "Official" solution works great.  
Thanks Nick and Jose.

Thomas




Your loop is a good idea, except
that putting the name in a new variable
is not the best way to do it. 
And there is no point in doing this 
for _all_ variables. Perhaps there 
are some other problems too. 

My official Stata solution: 

foreach v of var *_ { 
	local V : subinstr local v "_" "", all
	capture rename `v' `V' 
	if _rc di as txt "problem with `v'"
} 

User-written program: 

renvars *_, map(substr("@", 1, index("@","_") - 1))

(-renvars- was last updated in Stata Journal 5(4).) 

Bail out now if this is transparent. 

Otherwise: 

*_ catches all variable names that end with an underscore. 

-capture- traps any problem inside the loop and lets it continue. 

-renvars- won't rename any variable unless all new variable names are
OK (legal and unambiguous). 

The rule for a new name is 

substr("@", 1, index("@","_") - 1)

namely, start at the beginning and stop just before the first
underscore. 

Nick 
[email protected] 

> -----Original Message-----
> From: [email protected]
> [mailto:[email protected]]On Behalf Of 
> Thomas Speidel
> Sent: 25 January 2006 20:46
> To: [email protected]
> Subject: st: Renaming varnames
> 
> 
> I have a dataset whose variable names contain a varying amount of
> trailing underscores (_).
> Is there a way to rename all variable names without the trialing
> underscores (other than renaming each individual variable)?
> 
> ILLNESS___      byte   %10.0g                 
> SPECIMEN__      str12  %12s                   
> HOSPITAL__      byte   %10.0g                 
> TYPE______      byte   %10.0g                 
> STAGE_____      str4   %9s                    
> SIZE______      byte   %10.0g           
> ...
> 
> This is what I have tried so far (unsuccessfully):
> 
> 
> foreach v of varlist _all {
> 	gen `v'_underscore=strpos("`v'", "_")
> 	rename `v' `=substr("`v'", 1, `v'_underscore)'
> }
>

Thomas Speidel
Statistical Associate
Clinical Trials Unit
Tom Baker Cancer Centre
1331 - 29th Street N.W.
Calgary, AB, T2N 4N4

Tel. (403) 521-3370
Email: [email protected]


This e-mail and any attachments may contain confidential and
privileged information. If you are not the intended recipient,
please notify the sender immediately by return e-mail, delete this
e-mail and destroy any copies. Any dissemination or use of this
information by a person other than the intended recipient is
unauthorized and may be illegal.

*
*   For searches and help try:
*   http://www.stata.com/support/faqs/res/findit.html
*   http://www.stata.com/support/statalist/faq
*   http://www.ats.ucla.edu/stat/stata/



© Copyright 1996–2024 StataCorp LLC   |   Terms of use   |   Privacy   |   Contact us   |   What's new   |   Site index