2016-12-13 4 views
0

%の間の変化を計算します。Stataのは、私は私のデータでは、次の列</p> <p>事務所を持っている年

私が試した:

by industry: egen tot_2008 = sum(revenue) if year == 2008 
by industry: egen tot_2015 = sum(revenue) if year == 2015 
gen change = (tot_2015-tot_2008)/tot_2008 

をしかし、これはif sがどの年を制限するように動作しません。は、各合計にどの年が含まれるかの値を作成します。

+1

を参照してください。 (1)列はStata項ではなく(変数を代わりに使用する)(2)コードは変化率ではなく比例的な変化を与えます。 –

答えて

1

ご存じのように、コードの問題は、2008年および2015年の値が、その年の間だけ欠損値ではなく、したがって両方の変数で欠損しないことです。 falseの場合、真と0場合year == 2008を1と評価されているような表現にかかっ

by industry: egen tot_2008 = total(revenue/(year == 2008)) 
by industry: egen tot_2015 = total(revenue/(year == 2015)) 
gen change = (tot_2015-tot_2008)/tot_2008 

:ここでは、各業界のためのすべての年に値を広めるための一つの方法です。 0で割った場合、結果は欠損値であり、Stataは無視します。これはまさにあなたが望むものです。業界内のすべての観測値に基づいて合計を取ることにより、各業界ごとに同じ値が記録されることが保証されます。 missingsが無視されることを、同じ原理にかかっ

by industry: egen tot_2008 = total(cond(year == 2008, revenue, .)) 
by industry: egen tot_2015 = total(cond(year == 2015, revenue, .)) 
gen change = (tot_2015-tot_2008)/tot_2008 

:ここ

は、いくつかは、より明示的な見つけるもう一つの方法です。

egenファンクションtotal()の使用に注意してください。 egen関数sum()はまだ機能していますが、同じ関数ですが、Stata関数sum()との混乱を避けるために、その名前はStata 9の時点では文書化されていません。

あなたがそれをする対象のグラフと表で使用されるように、各産業のためのちょうど1観察をタグ付けする

egen tag = tag(industry) 

を使用し、ダブル(実際に複数の)カウントを避けるために。議論について

、私はあなたはそれが失敗を示したように、コードの原因となる複数の誤字を修正しhere、セクション9と10