[Stata]複数の変数に一括して処理

foreachを用いる。

https://www.stata.com/manuals/pforeach.pdf

foreach x of varlist var1-varn{
    regress var0 `x'
}

注意すべきは、連続処理の対象となる変数xを\('\)で括らなくてはいけないこと。Macのキーボードでいうと、最初の\(`\)はshift + @で、最後の\(‘\)はshift + 7となる。

ワードやpagesでstataのコマンドを編集している場合、時々自動校正機能で勝手にどちらかに直されてしまうことがあるので、自動校正機能をoffにしておいたほうが良い。

また、var_1, var_2, \(\cdots\), var_100といった変数を作成したい時は、

forvalues x = 1/100{
    gen var_`x' = 0
}

というようにすれば良い。rangeの表現方法は以下のようになる。

表現方法説明
a(b)caからcまで、bずつの幅で
a/baからbまでの整数
a b to caからcまでの整数で、aからb-aずつの幅で
a b : caからcまでの整数で、aからb-aずつの幅で
forvaluesの説明

上ではa/b以外はほとんど同じ使い方をするので、a(b)cだけ覚えておけば良い。例えば、\(2\)から\(99\)まで、\(5\)ずつの幅で表示したい時は次のようにする。

forvalues x = 2(5)100{
    dis `x'
}

結果は、\(2, 7, 12, 17, \cdots, 92, 97\)が表示される。変則的な変数、例えばアンケート調査を3, 6, 12, 18か月にやった時など、変数名をvar_3, var_6, var_12, var_12などとして一括処理したいときがある。この時は

foreach x in 3 6 12 18{
    command `x'
}

とすれば良い。

コメント

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