Самым простым способом в этом примере, вероятно, было бы привести в порядок ваши данные, а затем применить любую формулу, которую вы используете для расчета темпов роста, с помощью функции dplyr lag()
к фрейму данных, сгруппированному по City
:
## Minimal example
library(tidyverse)
df <- data.frame(City = c("Melbourne", "Sydney"),
year_2000 = c(100, 100),
year_2001 = c(101,100),
year_2002 = c(102, 102))
df %>%
gather(year, value, 2:4) %>%
group_by(City) %>%
mutate(growth = value/dplyr::lag(value,n=1))
Результат таков:
# A tibble: 6 x 4
# Groups: City [2]
City year value growth
<fct> <chr> <dbl> <dbl>
1 Melbourne year_2000 100 NA
2 Sydney year_2000 100 NA
3 Melbourne year_2001 101 1.01
4 Sydney year_2001 100 1
5 Melbourne year_2002 102 1.01
6 Sydney year_2002 102 1.02
Если вам абсолютно необходимы данные в формате, который вы указали на снимках экрана, вы можете применить spread()
, чтобы преобразовать их в исходный формат.Однако это обычно не рекомендуется.