Rename Stata:重命名所有不以x开头的变量

Rename Stata:重命名所有不以x开头的变量,rename,stata,Rename,Stata,我想为所有不以x开头的变量添加前缀或后缀: clear input xa xb c d 1 1 1 1 end 我的想法是这样的:重命名(!x)*y*应该会得到这样的结果:xaxbycyd。 谢谢你的提示。这在我心目中并不理想,但在我脑海中,也许像renpfix这样的东西对你有用: . clear . input xa xb c d xa xb c d 1. 1 1 1 1 2. end . list

我想为所有不以x开头的变量添加前缀或后缀:

clear
input xa xb c d
1 1 1 1
end
我的想法是这样的:
重命名(!x)*y*
应该会得到这样的结果:
xaxbycyd

谢谢你的提示。

这在我心目中并不理想,但在我脑海中,也许像
renpfix
这样的东西对你有用:

. clear
. input xa xb c d
            xa         xb          c          d
  1. 1 1 1 1
  2. end
. list

     +-----------------+
     | xa   xb   c   d |
     |-----------------|
  1. |  1    1   1   1 |
     +-----------------+

. renpfix "" y
. renpfix yx x
. list

     +-------------------+
     | xa   xb   yc   yd |
     |-------------------|
  1. |  1    1    1    1 |
     +-------------------+
在这里,我首先为所有变量添加了一个前缀,从而导致前两个变量的前缀为
yx
;然后,我替换了
yx
前缀,返回到
x
前两个变量

更新 另一个选项是使用
ds
findname
(使用
search findname
安装)并使用
not
参数对匹配的变量求反

. clear
. input xa xb c d
            xa         xb          c          d
  1. 1 1 1 1
  2. end
. list

     +-----------------+
     | xa   xb   c   d |
     |-----------------|
  1. |  1    1   1   1 |
     +-----------------+

. ds x*, not
c  d

. foreach v in `r(varlist)' {
  2. rename `v' y`v'
  3. }
. list

     +-------------------+
     | xa   xb   yc   yd |
     |-------------------|
  1. |  1    1    1    1 |
     +-------------------+

ds
findname
将它们的结果存储在
`r(varlist)
中,这样你就可以在识别相关变量后使用
foreach

这在我看来并不理想,但在我的脑海中,也许像
renpfix
这样的东西对你有用:

. clear
. input xa xb c d
            xa         xb          c          d
  1. 1 1 1 1
  2. end
. list

     +-----------------+
     | xa   xb   c   d |
     |-----------------|
  1. |  1    1   1   1 |
     +-----------------+

. renpfix "" y
. renpfix yx x
. list

     +-------------------+
     | xa   xb   yc   yd |
     |-------------------|
  1. |  1    1    1    1 |
     +-------------------+
在这里,我首先为所有变量添加了一个前缀,从而导致前两个变量的前缀为
yx
;然后,我替换了
yx
前缀,返回到
x
前两个变量

更新 另一个选项是使用
ds
findname
(使用
search findname
安装)并使用
not
参数对匹配的变量求反

. clear
. input xa xb c d
            xa         xb          c          d
  1. 1 1 1 1
  2. end
. list

     +-----------------+
     | xa   xb   c   d |
     |-----------------|
  1. |  1    1   1   1 |
     +-----------------+

. ds x*, not
c  d

. foreach v in `r(varlist)' {
  2. rename `v' y`v'
  3. }
. list

     +-------------------+
     | xa   xb   yc   yd |
     |-------------------|
  1. |  1    1    1    1 |
     +-------------------+

ds
findname
将其结果存储在
`r(varlist)
中,因此您可以在识别相关变量后使用
foreach

可以避免
foreach
循环,非常感谢。我喜欢第一个。它简单而聪明。非常感谢。我喜欢第一个。它很简单,也很聪明。我想这应该在ds x*之后运行,而不是在ds x*之后运行,对吗?但是我不断得到一个
无效的名称r(198)
错误。有什么想法吗?(顺便说一句,我用的是Stata 11。)
rename
的使用仅限于Stata 12。啊。。。那我就倒霉了。在你最后一次评论之后,我最接近于使用
renvars(`r(varlist)')、前缀(y)
而不是我的循环。帮助文件中的同一个Nick Cox?
renvars
部分是我的工作。还有
ds
findname
renvars
(比如
findname
)必须首先安装。我假设这是在
ds x*之后运行的,而不是
,对吗?但是我不断得到一个
无效的名称r(198)
错误。有什么想法吗?(顺便说一句,我用的是Stata 11。)
rename
的使用仅限于Stata 12。啊。。。那我就倒霉了。在你最后一次评论之后,我最接近于使用
renvars(`r(varlist)')、前缀(y)
而不是我的循环。帮助文件中的同一个Nick Cox?
renvars
部分是我的工作。还有
ds
findname
<必须首先安装code>renvars
(如
findname
)。
. rename (`r(varlist)') (y=)