我一直挣扎在河的问题,我有年度数据的数据框(当年是一个int)。这里是:
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
功能,我无法访问前一行的数据,因此无法计算的增长速度。我想到了一个循环遍历整个数据框,但我相信,有一个更简单,更优雅的方式来做到这一点。
简单地说,这里是我的2个问题:
谢谢您的帮助!
难道你的意思是像下面?
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
关于你的问题,当然你也可以只包括某些数据,但确切的答案将取决于你想要做什么。