2017-02-14 33 views
0

我在Stata有一個不平衡的小組,3年(2006年,2008年和2010年)和13,768個ID。我執行命令xtdescribe並獲得:如何保持整個時間段內都有觀察結果的面板?

 Freq. Percent Cum. | Pattern* 

---------------------------+---------- 8265 49.80 49.80 | 111 2672 16.10 65.90 | 1.. 2241 13.50 79.40 | 11. 1779 10.72 90.12 | ..1 923 5.56 95.69 | .11 413 2.49 98.17 | .1. 303 1.83 100.00 | 1.1 ---------------------------+---------- 16596 100.00 | XXX --------------------------------------

*Each column represents 2 periods.

我想keep只是對所有3年意見的ID。 我試圖執行像

keep pid if syear == 2006 & syear == 2008 & syear == 2010 

keep if syear == 2006 & syear == 2008 & syear == 2010 

一個簡單的命令,但他們只是錯了,因爲在第一種情況下的語法是無效的,在第二種情況下我剛剛刪除所有觀測。

我該如何才能觀察到在整個時間段(2006,2008和2010三年)都有觀察的ID?

回答

0

當Stata測試條件時,它通過觀察測試它們的觀察結果。它不而不是看看其他意見,除非你強制使用下標語法。現在的情況

syear == 2006 & syear == 2008 & syear == 2010 

是不正確的,因爲它要求的是syear在同一個觀察3個不同的值。因此沒有任何東西被保留,一切都被拋棄這好像是說

我的年齡是29,我的年齡是31和我的年齡是33

其中(不論你的年齡)是不是真的在同一時刻。

在你的情況,這將工作

bysort pid : keep if _N == 3 

這是更接近你嘗試過的邏輯:

bysort pid : egen npanel = total(inlist(syear, 2006, 2008, 2010)) 
keep if npanel == 3 

或者你可以去

bysort pid : egen npanel = total(syear == 2006 | syear == 2008 | syear == 2010) 

對於您所描述的問題,第一種解決方案是最好的,但其他兩種技術可以幫助其他情況。