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

时间:2012-11-22 08:57:29

标签: rename stata

我想为所有不以x:

开头的变量添加前缀或后缀
clear
input xa xb c d
1 1 1 1
end

我认为这样的事情:rename (!x)* y*应该给出这样的结果:xa xb yc yd。 谢谢你的提示。

2 个答案:

答案 0 :(得分:2)

可以避免foreach循环

. rename (`r(varlist)') (y=)

答案 1 :(得分:1)

这在我看来并不理想,但在我的脑海中,或许像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

更新

另一种选择是使用dsfindname(使用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 |
     +-------------------+

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