0

xで始まらないすべての変数に接頭辞または接尾辞を追加したいと思います。

clear
input xa xb c d
1 1 1 1
end

私はこのようなことを考えました:rename (!x)* y*これはこの結果を与えるはずです:xa xb yc yd。ヒントをありがとう。

4

2 に答える 2

2

foreachループを回避できます

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

于 2012-11-26T17:04:27.610 に答える
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 |
     +-------------------+

ここでは、最初にすべての変数にプレフィックスを追加したため、最初の2つの変数のプレフィックスはyx;になります。次に、最初の2つの変数yxに戻るためにプレフィックスを置き換えました。x

アップデート

別のオプションは、dsまたはfindname(install using 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

于 2012-11-22T11:22:29.790 に答える