不平衡面板数据的增长率
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")
)
我正在尝试获取不平衡面板数据中某些变量的增长率,但我仍然在不存在滞后的年份中获得结果。
我一直在尝试使用库 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")
)