2016-09-23 37 views
0

我正在使用Stata。我有一個數據集的多個公司和他們的銀行在給定的一年多年。由於公司通常擁有不止一家銀行,因此對於一個公司一年有多個觀察值。我有一個變量「bank_exityear」,其中包含去年銀行在樣本中。我想創建一個變量,給定年份中的每個公司都包含上一年(以及同一公司)的「bank_exityear」的最小值。(Stata)從一年內的多個觀察值中查找較早年份的值

的示例數據集在這裏附:

enter image description here

我想創建的變量是大膽的「希望」。數據始於2008年。

什麼是最好的方式來創建這個變量?

+2

你應該從ssc安裝'dataex'。對於每個人來說,這比發佈數據圖像要容易得多。 –

回答

2

以下是使用rangestat(來自SSC)的解決方案。要在Stata的命令窗口安裝它,鍵入:

ssc install rangestat 

手頭的問題,這需要跨年級其比今年少一個相同firmid所有觀測發現的最小bank_exityear的當前的觀察:

clear 
input year firmid bankid bank_exityear want 
2008 1 1 2008 . 
2008 1 2 2015 . 
2009 1 2 2015 2008 
2009 1 3 2015 2008 
2010 1 2 2015 2015 
2010 1 3 2015 2105 
end 

rangestat (min) bank_exityear, interval(year -1 -1) by(firmid) 
list 

和結果:

. list, sepby(firmid) 

    +-----------------------------------------------------+ 
    | year firmid bankid bank_e~r want bank_e~n | 
    |-----------------------------------------------------| 
    1. | 2008  1  1  2008  .   . | 
    2. | 2008  1  2  2015  .   . | 
    3. | 2009  1  2  2015 2008  2008 | 
    4. | 2009  1  3  2015 2008  2008 | 
    5. | 2010  1  2  2015 2015  2015 | 
    6. | 2010  1  3  2015 2105  2015 | 
    +-----------------------------------------------------+ 
0

你的問題有點不清楚,但我相信

bysort bank_id (year) : gen lag_exit = bank_exit_year[_n-1] 
bysort bank_id : egen min_var = min(lag_exit) 

一些組合應該工作

+0

謝謝你的回覆。不幸的是,它並沒有創建我需要的變量,因爲指數化_n-1只返回一個觀察值,因此可能無法在t-1中捕獲公司的所有觀察值。我需要檢索每個公司t-1中所有觀察值的bankexit_year的最小值。 – user6158130

2

這類策略可能做的伎倆:

clear 
input year firmid bankid bank_exityear want 
2008 1 1 2008 . 
2008 1 2 2015 . 
2009 1 2 2015 2008 
2009 1 3 2015 2008 
2010 1 2 2015 2015 
2010 1 3 2015 2105 
end 

tempfile min_year 
preserve 
    collapse (min) want2 = bank_exityear, by(firmid year) 
    save `min_year' 
restore 

replace year = year - 1 
merge m:1 firmid year using "`min_year'", nogen keep(master match) 
replace year = year + 1 

這是假設有年內沒有差距。