我正在使用Stata。我有一個數據集的多個公司和他們的銀行在給定的一年多年。由於公司通常擁有不止一家銀行,因此對於一個公司一年有多個觀察值。我有一個變量「bank_exityear」,其中包含去年銀行在樣本中。我想創建一個變量,給定年份中的每個公司都包含上一年(以及同一公司)的「bank_exityear」的最小值。(Stata)從一年內的多個觀察值中查找較早年份的值
的示例數據集在這裏附:
我想創建的變量是大膽的「希望」。數據始於2008年。
什麼是最好的方式來創建這個變量?
我正在使用Stata。我有一個數據集的多個公司和他們的銀行在給定的一年多年。由於公司通常擁有不止一家銀行,因此對於一個公司一年有多個觀察值。我有一個變量「bank_exityear」,其中包含去年銀行在樣本中。我想創建一個變量,給定年份中的每個公司都包含上一年(以及同一公司)的「bank_exityear」的最小值。(Stata)從一年內的多個觀察值中查找較早年份的值
的示例數據集在這裏附:
我想創建的變量是大膽的「希望」。數據始於2008年。
什麼是最好的方式來創建這個變量?
以下是使用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 |
+-----------------------------------------------------+
你的問題有點不清楚,但我相信
bysort bank_id (year) : gen lag_exit = bank_exit_year[_n-1]
bysort bank_id : egen min_var = min(lag_exit)
一些組合應該工作
謝謝你的回覆。不幸的是,它並沒有創建我需要的變量,因爲指數化_n-1只返回一個觀察值,因此可能無法在t-1中捕獲公司的所有觀察值。我需要檢索每個公司t-1中所有觀察值的bankexit_year的最小值。 – user6158130
這類策略可能做的伎倆:
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
這是假設有年內沒有差距。
你應該從ssc安裝'dataex'。對於每個人來說,這比發佈數據圖像要容易得多。 –