不平衡面板数据的增长率

Growth Rates in Unbalanced Panel Data

我正在尝试获取不平衡面板数据中某些变量的增长率,但我仍然在不存在滞后的年份中获得结果。

我一直在尝试使用库 Dplyr 获取增长率。正如我在这里展示的那样:

total_firmas_growth <- total_firmas %>% 
  group_by(firma) %>% 
  arrange(anio, .by_group = T) %>% mutate(
    ing_real_growth = (((ingresos_real_2/Lag(ingresos_real_2))-1)*100)
)

例如,如果一家公司在 2008 年有 "ingresos_real_2" 的值,而下一个值是在 2012 年,代码会计算增长率而不是获得 NA,因为缺少年份(即缺少 2011 年来计算 2012 年的增长率,正如您在下面的 "firma" 115 (id) 示例中所见:

total_firmas_growth <- 
"     firma        anio     ingresos_real_2  ing_real_growth
1          110         2005         14000               NA  
2          110         2006         15000              7.14  
3          110         2007         13000             -13.3   
4          115         2008         15000               NA  
5          115         2012         13000               NA  
6          115         2013         14000              7.69  

非常感谢您的帮助。

将原始 table 转换为列有 NA 的格式的最简单方法是创建一个 tibble,其中包含所有分组列和您的年份。 Expand 创建您感兴趣的变量的所有 tibble,并且 {.} 接收比 . 更强大的管道。 (我相信通过创建副本)。由于任何包含 NA 的数学运算都会产生 NA,因此如果您使用 group_by、排列、在其后修改代码,这应该可以满足您的需求。

total_firmas %>% 
  left_join(
    expand({.}, firma, anio),
    by = c("firma","anio")
  )