Stata计算年份之间的百分比变化

时间:2016-12-13 13:27:46

标签: stata

我的数据中有以下列

企业 - 收入 - 行业 - 年

我想计算2008年至2015年期间每个行业的总收入变化百分比。

我试过了:

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限制egen创造价值的年份以及每个总和中包含的年份。

1 个答案:

答案 0 :(得分:1)

正如您所知,代码的问题在于,2008年和2015年的值将分别仅为这些年份的非缺失值,因此永远不会错过这两个变量。以下是为每个行业传播价值的一种方法:

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

这取决于year == 2008等表达式,如果为真,则计算为1,如果为假则为0。如果除以0,结果将是一个缺失值,Stata将忽略该值,这正是您想要的。对行业中的所有观察结果进行总计确保为每个行业记录相同的值。

以下是另一种更明确的方法:

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 9开始未记录,以避免与Stata函数sum()混淆。

为避免双倍(实际上是多次)计数,请使用

 egen tag = tag(industry) 

为每个行业标记一个观察值,用于您想要的图表和表格。

有关讨论,请参阅here,第9和10节。