У меня есть эти данные:
library(tidyverse)
df <- tibble(year = c(2018L, 2019L, 2020L, 2021L, 2022L, 2023L, 2024L, 2018L, 2019L,
2020L, 2021L, 2022L, 2023L, 2024L),
number = c(1000L, 2000L, 3000L, 4000L, 5000L, 6000L, 7000L, 1000L, 1100L,
1200L, 1300L, 1400L, 1500L, 1600L),
area = c("a", "a", "a", "a", "a", "a", "a", "b", "b", "b", "b", "b",
"b", "b"))
year_a <- 2019
year_b <- 2022
Что я преобразовал в это:
df2 <- df %>%
filter(year %in% c(year_a, year_b)) %>%
spread(year, number)
Что это:
# A tibble: 2 x 3
area `2019` `2022`
<chr> <int> <int>
1 a 2000 5000
2 b 1100 1400
Я хочу иметь возможность рассчитать разницу между year_b (2022) и year_a (2019) без необходимости вводить эти числа, так как годы будут меняться и указываться в объектах.
Я пробовал это:
year_a_chr <- paste0("`", year_a, "`", sep = "")
year_b_chr <- paste0("`", year_b, "`", sep = "")
df2 %>%
mutate(growth = !!year_b_chr - !!year_a_chr)
Что дает мне эту ошибку:
Ошибка в mutate_impl (.data, точки):
Ошибка оценки: неверный тип аргумента.
Как бы я решил это? Спасибо.