1

作物レベルで報告された大量の農場データがあるとします(つまり、データは作物ごとに提供されます)。

各作物観察は特定のフィールドに属し、各フィールドは特定のファームに属します。(フィールドとファームの識別変数はデータセットに含まれています。)

Stataでは、作物レベルのデータをフィールドレベルに集約してから、フィールドレベルのデータをファームレベルまで集約したいと考えています。

したがって、変数xの場合、クロップからフィールドレベルに集約するための基本的なコマンドは次のとおりです。

egen x_field = total(x_crop)、by(farm、field)

次に、ファームレベルに集約する場合:

egen x_farm = total(x_field)、by(farm)

集計する必要のある変数がたくさんあるので、サフィックス「_field」、「_ farm」ごとに同じコードを繰り返すのではなく、foreachループを使用してこれを実行したいと思います。誰かがここで私を助けてくれたら幸いです。

4

3 に答える 3

2

egenあなたのコマンドがあなたが望むことをするための最良の方法であると仮定します:

foreach x of varlist var1-var99 {
  di "Processing variable `x'"
  egen `x'_field = total(`x'_crop), by(farm field)
  egen `x'_farm = total(`x'_field), by(farm)
}

ループは、 ~ の範囲内のすべての変数を処理var1var99ます。varlistより洗練された方法で変数を定義したい場合は、変数リストの Stata ヘルプを参照してください。

編集: フィールドにカンマがあってはなりませんby()(Nick さんに感謝します)。

于 2012-12-02T10:19:55.100 に答える
0

これを正しく理解すれば、集計を 2 段階にする必要はありません。農場の識別子に従って各作物を集計するだけです。

類似物は、米国の州内の郡内の人々に関する観察です。州の合計が必要な場合は、作業するだけですby(state)。これを確認するために、郡識別子を破棄したと想像してください。必要な情報を破棄していません。

いずれにしても、グループ内の 1 つだけの観測にタグを付けるように設計されたegenの関数に注意してください。tag()

于 2012-12-03T00:26:50.383 に答える