2

次の Stata プログラミングの問題に頭を悩ませることはできません。

顧客によるすべての車の購入をリストしたテーブルがあり、次のようにします。

Customer | Make | Price
-----------------------
      c1 |   m1 |     1
      c1 |   m1 |     2
      c1 |   m3 |     1
      c2 |   m2 |     2
      c3 |    . |     .

これを、顧客ごとに 1 つの観察/行を含むテーブルに変換し、各メーカーに支払われる最大価格をリストします。

Customer | m1 | m2 | m3
-----------------------
      c1 |  2 |  0 |  1
      c2 |  0 |  1 |  0
      c3 |  0 |  0 |  0

どうすればこれを達成できますか? 私は知っていますが、二重行reshape wideのために機能しません。c1 | m1また、 の欠損値c3が問題を引き起こしています。

4

1 に答える 1

4

やりたいことに応じて、少し異なる方法でアプローチすることをお勧めします。たとえば、-bysort- を使用すると、各メーカーの顧客別の最高価格を見つけることができます。

bysort Customer Make : egen maxPrice = max( Price )

または、collapse を使用して顧客ごとの最大価格を見つけ、次のようにすることもできます。

collapse (max) Price, by( Customer Make )

ただし、 -reshape- を使用して投稿したテーブルが本当に必要な場合は、次を実行できます。

collapse (max) Price, by( Customer Make )
drop if Price == .
reshape wide Price, i( Customer ) j( Make ) string
renpfix Price 

Price 列に欠落データがある場合、reshape は失敗することに注意してください。上記のコードではこれらの観測を削除しましたが、投稿されたターゲット テーブルに示すように、欠落しているデータをゼロに置き換えるなど、別のことを選択することもできます。

于 2011-05-27T17:07:20.733 に答える