2013-05-28 18 views
1

我有以下initial.dta數據集:Stata。如何發佈按類型的矩陣?或者如何返回矩陣的值?

obs. ID city  salary 
1 123 Normal  100 
2 124 Paris  120 
3 125 NY   130 
4 122 .a   155 
5 120 Paris  100 
6 128 Chicago  150 
................ 

citysalary一些值可能會丟失(.a)中。我需要計算平均工資爲每一個可能的城市價值,並將其發佈到不同的Stata .dta,從而使新的Stata文件應該是這樣的:

 city  averageSalary 
     Normal  120 
     Paris  110 
     NY   150 
     .a   108 
     Chicago  160 
     ................. 

我嘗試這樣做:

clear 

postfile myPost city averageIncome using target.dta 

    use initial, clear 
    sort city 
    by city: sum salary, meanonly 
    post myPost (`r(city)') (`r(mean)') // This line does not execute. 

postclose myPost  

這裏有什麼問題?請有人回答這個問題。或發表評論......

回答

4

你這個基礎,我想,我的回答How to retrieve data from multiple Stata files?

有你的代碼的三個基本問題。

  • 當你執行

    by city: sum salary, meanonly 
    

塔塔貫穿的city不同的值,但只有最後一個值的結果將在內存中留下。所以,雖然你想要的結果將被顯示,但其中大部分將不可用,並且這個命令幾乎沒有用於你的目的。

  • 你在猜測,當你發佈信息時,有一種叫做r(city)的東西可用。這個猜測是錯誤的。請參閱summarize的文檔以查看以後還有哪些內存可用。

  • 您誤解了post的功能。實質上,您需要一次性發布新結果文件的每一行(case,observation,record),通常在一個循環內。你不會一氣呵成地把整套結果集中起來。

幸運的是,對於您和其他想要這樣做的人來說,獲得您想要的東西有一種更簡單的方法。

use initial, clear 
collapse salary, by(city) 
save target.dta 

collapse崩潰到默認手段,但

collapse (mean) salary, by(city) 

更加明確的語法。

另請參見Maarten Buis對此處引用的主題的回答(上面的鏈接)。如果需要,可以使用其他變量名稱:請參閱collapse的語法。

+0

非常感謝。按照您的建議,我將您的示例與Maarten Buis結合使用。 – CHEBURASHKA