Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RE: st: Remove numbers from variable name
From
"Nick Cox" <[email protected]>
To
<[email protected]>
Subject
RE: st: Remove numbers from variable name
Date
Tue, 29 Jun 2010 12:29:39 +0100
Excellent point. And my silly mistake. So, we should reverse the
testing:
foreach v of var question* {
if regexm("`v'", "^question[1-9][0-9].*") {
local newname = substr("`v'", 11, .)
rename `v' `newname'
}
else if regexm("`v'", "^question[1-9].*") {
local newname = substr("`v'", 10, .)
rename `v' `newname'
}
else di "`v': problematic name"
}
I doubt that is foolproof too, but it should help.
Nick
[email protected]
Martin Weiss
Sent: 29 June 2010 12:23
To: [email protected]
Subject: AW: st: Remove numbers from variable name
<>
But careful! A "two-digit- question" would comply with the if-branch in
Nick`s solution as well. So I am afraid it would not make it to the
else-branch:
*************
di in r regexm("question16haveyouever", "^question[1-9].*")
*************
Nick Cox
In terms of the other question, regular expressions offer one way to
distinguish one from two digits:
foreach v of var question* {
if regexm("`v'", "^question[1-9].*") {
local newname = substr("`v'", 10, .)
rename `v' `newname'
}
else if regexm("`v'", "^question[1-9][0-9].*") {
local newname = substr("`v'", 11, .)
rename `v' `newname'
}
else di "`v': problematic name"
}
Nick
[email protected]
Martin Weiss
" Does not -subinstr- work for string observation, and not variable
names?"
-subinstr- substitutes parts of strings within strings. Since a variable
name is just a string, I can use it for your purposes:
*************
clear*
gen question5doyouhave=""
gen question6areyou=""
foreach var of varlist _all{
loc newname = substr(subinstr("`var'","question","",1),2,.)
rename `var' `newname'
}
*************
For the -varname-s containing two digits, you would have to change the
code
to "),3,.)" at the end of the -local- line...
Rasika Raghavan
Richard,
Thanks. It worked out fine. Can you suggest though a way in which I
don't have to specify the variables? Why I am asking is that, for
single digit questions it would be predrop(10) and for two digit
question numbers, it would be predrop(11). While it was easy in my
case, I can think of situations where this might work out to be
tedious.
Martin,
The "are you" was a typo. But thanks, I had not realized something
like -strtoname- existed.
I did not quite follow "For your substitution, look at -subinstr()-.
Why not put the question in the -var label- or a -note- to the
variable?"
Does not -subinstr- work for string observation, and not variable names?
*
* For searches and help try:
* http://www.stata.com/help.cgi?search
* http://www.stata.com/support/statalist/faq
* http://www.ats.ucla.edu/stat/stata/