我一直在努力解决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
函数,我无法访问上一行的数据,因此无法计算增长率。我考虑过遍历整个数据帧的循环,但是我确信有一种更简单,更优雅的方法来实现它。
总之,这是我的两个问题:
谢谢您的帮助!
答案 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
关于您的问题,您当然只能包含某些数据,但是确切的答案取决于您要执行的操作。