Как рассчитать скорость роста по линиям в кадре данных? - PullRequest
0 голосов
/ 08 февраля 2019

Я боролся с проблемой в R. У меня есть датафрейм с годовыми данными (год - это 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. Возможно ли включить в это вычисление только определенные строки или необходимо предварительно отфильтровать кадр данных?

Спасибо за вашу помощь!

1 Ответ

0 голосов
/ 08 февраля 2019

Вы имели в виду что-то вроде ниже?

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

По вашему вопросу, конечно, вы можете включить только определенные данные, но точный ответ будет зависеть отчто бы ты хотел сделать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...