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)桁の数字 |
関連記事
データ操作の基本
変数の確認方法(one/twoway-tabulate)
Stataでのdummy変数の生成
labelの使い方、ラベル名の変更
データクリーニング
marginsplotの調整方法
Difference in Difference 差の差分法
媒介分析について
Stataのtabulateで割合を出す方法
Tableをコマンドひとつで作成する方法「table1_mc」について
Multiple Imputation 多重代入法について
StataによるグループごとのTrajectory解析
Stataでのマルチレベル分析について
そもそもマルチレベル分析とはなにか
コメント