2016-09-23 16 views
0

私はStataを使用しています。私は、複数年の間、複数の企業とその銀行のデータセットをある年以内に持っています。企業には複数の銀行が存在することが多いため、企業年度には複数の所見があります。私は変数 "bank_exityear"を持っています。この変数には、銀行がサンプルに入っている昨年の年が含まれています。私は、ある年の各企業について、前年からの "bank_exityear"の最小値を含む変数を作成したいと考えています(同じ会社の場合)。(Stata)1年以内に複数の観測値を用いて以前の年の値を見つける

例データ・セットは、ここに添付されています。私が作成したい

enter image description here

変数は、大胆な「欲しい」です。データは2008年に開始されます。

この変数を作成するにはどうすればよいでしょうか?

+2

sscから 'dataex'をインストールしてください。これは、データの画像を投稿するよりもはるかに簡単です。 –

答えて

2

ここにはrangestat(SSCから)を使用したソリューションがあります。 Stataののコマンドウィンドウで、タイプを、それをインストールするには:当面の問題について

ssc install rangestat 

、これは、その年より1少ない同じ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は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 

これはその存在を前提としてい年には隙間がない。

関連する問題