如何计算数据框中各行的增长率?

时间:2019-02-08 17:50:28

标签: r

我一直在努力解决R中的问题。 我有一个包含年度数据的数据框(年份为整数)。 在这里:

    year  total
 1  1991   955.
 2  1992  2947.
 3  1993  7005.
 4  1994  7454.
 5  1995 28542.
 6  1996 21160.
 7  1997 52374.
 8  1998 57506.
 9  1999 90078.
10  2000 71042.

我的目标是从1992年开始计算每年的增长率,但我找不到办法。使用dplyr及其mutate函数,我无法访问上一行的数据,因此无法计算增长率。我考虑过遍历整个数据帧的循环,但是我确信有一种更简单,更优雅的方法来实现它。

总之,这是我的两个问题:

  1. 如何计算增长率?
  2. 是否可以在此计算中仅包含某些行,或者是否需要事先过滤掉数据框?

谢谢您的帮助!

1 个答案:

答案 0 :(得分:0)

您的意思是下面的意思吗?

library(dplyr)

df %>%
  mutate(
    growth = round(((total - lag(total)) / lag(total)) * 100, 2)
  )

输出:

   year total growth
1  1991   955     NA
2  1992  2947 208.59
3  1993  7005 137.70
4  1994  7454   6.41
5  1995 28542 282.91
6  1996 21160 -25.86
7  1997 52374 147.51
8  1998 57506   9.80
9  1999 90078  56.64
10 2000 71042 -21.13

关于您的问题,您当然只能包含某些数据,但是确切的答案取决于您要执行的操作。