如何计算跨行增长率在数据帧?

问题描述 投票:0回答:1

我一直挣扎在河的问题,我有年度数据的数据框(当年是一个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个问题:

  1. 如何计算的增长速度?
  2. 是否有可能只包括在此计算某些行或确实需要数据帧将被事先过滤掉?

谢谢您的帮助!

r
1个回答
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

关于你的问题,当然你也可以只包括某些数据,但确切的答案将取决于你想要做什么。

© www.soinside.com 2019 - 2024. All rights reserved.