2011-05-27 53 views
2

我不能完成我的頭圍繞以下Stata的規劃問題:如何在Stata中聚合關係數據?

我有一個表由客戶列出所有購車,使:

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

我想用一個變換成一個桌子觀察/每位客戶,列出每個品牌支付的最高價格:

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

我該如何做到這一點?我知道reshape wide,但由於行數加倍c1 | m1而不起作用。此外,c3的缺失值正在導致麻煩。

回答

4

根據你想要做什麼,我建議有點不同。例如使用-bysort-你可以找到每個品牌的最高價格。

bysort Customer Make : egen maxPrice = max(Price) 

或者,你可以使用崩潰找到最大的價格由客戶做出:

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列中遇到缺失數據,重塑將失敗。我在上面的代碼中刪除了這些觀察值,但是您可以選擇執行一些不同的操作,例如在發佈的目標表中顯示時用零替換丟失的數據。

+0

我真的需要平面格式,因爲它將大大簡化其餘的分析。到目前爲止,我不知道「崩潰」,感謝提示! – blubb 2011-05-28 14:48:34