[Stata][Rename][名前の変更]Stataでのグループごとのrename

black pen on top of white paper with george text stata
Photo by George Becker on Pexels.com

rename group

https://www.stata.com/manuals13/drenamegroup.pdf

こちらのリンクから。

単一変数の名前の付替

\(1\)個の変数の名前を変更するときは、

ren(ame) old_var new_var

とすれば良い。コマンドはrenameと打ち込んでも、省略してrenと打ち込んでもどちらでも良い。ここでは”old_var”という名前の変数が、”new_var”という名前になる。

複数の変数の名前の付替

この場合は、

ren(ame) (old1 old2 ...) (new1 new2...)

とする。括弧は必要だが、変数の後に”,”を付けてはいけない。

大文字、小文字の変更

例えば”AGE”という変数を”age”と小文字にしたり、”Age”と先頭だけ大文字にする場合、

ren(ame) var, {u(pper)|l(ower)|p(roper)}

とする。”AGE”という変数は

ren AGE, l

とすれば”age”になり、

ren  age, p

とすることで”Age”になる。

具体例とrenameのルール

\(1. \) “stat”という名前の変数を”status”という名前に変更する。

ren stat status

\(2. \) “stat” , “inc”という名前の\(2\)つの変数を”status”, “income”という名前に変更する。

ren (stat inc) (status income)

\(3. \) “v1”, “v2″という変数の名前を交換する。

ren (v1 v2) (v2 v1)

\(4. \) “a”, “b”, “c”とう\(3\)つの変数の名前を”b”, “c”, “a”とう名前に交換する。特にswapの個数に制限はない。

ren (a b c) (b c a)

\(5. \) “a”, “b”, “c”とう\(3\)つの変数の中で、”a”と”c”の名前だけを交換する。自分に自分の名前を付けることも許容されている。

ren (a b c) (c b a)

一括変換、一括rename

ここからは意外に知らない事が多くて勉強になった。

\(6. \) “jan”という名前で始まる変数から”jan”を取り除き、代わりに末尾に\(1\)を付ける。

ren jan* *1

これを行うと、例えば”janstat”は”stat1″に、”janinc”は”inc1″に変換される。”*”は正規表現で、\(0\)個以上の一致するものを表す。これは応用が効いて、

ren jan* *

とすれば”jan”で始まる変数から”jan”をすべて取り除き、

ren *jan *

とすれば”jan”で終わる変数から”jan”をすべて取り除ける。

\(7. \) “jan”で始まり”jan”の後に\(1\)文字ある変数をから”jan”を取り除く。”?”は正規表現で\(1\)文字を表す。”??”とすれば\(2\)文字になる。

ren jan? ?1

例えば”jans”という変数はこのコードで”s1″になる。

\(8. \) “jan”という文字が真ん中にある場合、以下のようにする。

ren *jan* **

このコードで例えば”janstat”は”stat”に、”injanstat”は”instat”に、”subjan”は”sub”に名前が変更される。”*”などのワイルドカードは\(2\)個以上使用できる。

ren jan*s* *s*1

は”jan”で始まり”s”を含む文字の”jan”を消去し、”s”を残し、\(1\)を付与する。例えば”janstat”は”stat1″に、”janest”は”est1″になるが、”s”の含まれない”janinc”は”inc1″とはならず変更されない。

\(9. \) 上の\(8\)の例で、”*”はなぜ\(2\)つなのかと思わなかっただろうか。例えば、”janstat”という変数名に対して

ren *jan* *

とするとエラーが出る。このコードだと”jan”以降の文字をすべて消去するので、変数名が”.”(欠損値)になってしまう。”statjan”という変数名にこのコードを行うと、”stat”という変数になる。なので、”incjan71″に行うと”inc”になる。

\(10. \) “jan”よりも前の文字をなんであれ削除する場合は、

ren *jan* .*

とする。このコードで”midjaninc”は”inc”になる。”.”(ドット)は新しい変数で対応する旧変数のワイルドカードをスキップする。

\(11. \) “pop”で終わる名前の変数の先頭に”jan”を付けるとき、

ren *pop jan=:

とする。”age1pop”は”janage1pop”となる。また、

ren (status bp time) admit=:

とすると、変数名は順に”admitstatus”, “admitbp”, “admittime”になる。

ナンバリングの方法

\(12. \) “v1, v2, \(\cdots\)”という名前を”stat1, stat2, \(\cdots\)”という名前にする。

ren v# stat#

\(13\) \(12.\)とほとんど同じなのだが、ナンバーマークを括弧で囲むと、”v10″は変更しない。これは、”(#)”が一桁の数字を意味するからである。”(##)”とすると二桁の数字になる。

ren v(#) stat(#)

なので、

ren v(##) stat(##)

とすると、”v01, v02, \(\cdots\)”を”stat01, stat02, \cdots”にして、”v10, v11, \(\cdots\)”を”stat10, stat11, \(\cdots\)”とするが、”v100″は変更しない。

\(14. \) \(13.\)からわかるように、”v1″などの変数を”v01″としたいときは、

ren v# v(##)

で良い。

\(15. \) 変数の中で”v1, v10, v3″というものがこの順で並んでいるとする。これを”a, b, c”という名前に変更するときは、以下のようになる。sortする、しないで順番が変わるので注意。

ren v# (a b c)

\(16. \) 変数が現れる順番が”v5, v4, v9, \(\cdots\)”のようにめちゃくちゃな場合、

ren v# v#, renumber

とすると順番に”v1, v2, \cdots”としてくれる。

\(17. \) “*”マークを使うと、こんなこともできる。

ren v* v#, renumber

このコマンドは、例えば”v”で始める変数である”valpha”を”v1″に、”vgamma”を”v2″にする。

連番の作成

これが一番使うかも。

\(18. \) “a, b, c”という変数を”v1, v2, v3″にしたいときは、

ren (a b c) v#, addnumber

とする。

\(19. \)最後はややトリッキーな気も。”a12″を”a21″に、”a13″を”a31″に\(\cdots\)という変換。使う機会があるかな?

ren a(#)(#) a(#)[2](#)[1]

一括でprefixあるいはsuffixをつける

この場合”renames”というアドオンが便利。いつものように

ssc install renames

でインストール。これを使って

renames *, prefix(myprefix_)

あるいは

renames *, suffix(_mysuffix)

とする。

Stataでの特殊文字、正規表現のまとめ

一応表にしておく。

記号説明
*\(0\)個以上の文字
?\(1\)文字
#\(1\)個以上の数字
(#)\(1\)桁の数字
(##)\(2\)桁の数字
(###)\(3\)桁の数字
\(\cdots\)
(##########)\(\10)桁の数字
Stataでの特殊文字

関連記事

データ操作の基本

変数の確認方法(one/twoway-tabulate)
Stataでのdummy変数の生成
labelの使い方、ラベル名の変更

データクリーニング

複数の置き換え
重複のカウント
複数の変数に一括して処理

marginsplotの調整方法
Difference in Difference 差の差分法
媒介分析について
Stataのtabulateで割合を出す方法
Tableをコマンドひとつで作成する方法「table1_mc」について
Multiple Imputation 多重代入法について
StataによるグループごとのTrajectory解析
Stataでのマルチレベル分析について
そもそもマルチレベル分析とはなにか

コメント

タイトルとURLをコピーしました