Быстрый способ с более новой pivot_longer
функцией tidyr
, которая позволяет изменять форму данных и разбивать столбцы за один шаг. Взгляните на имена столбцов:
names(d)
#> [1] "X2019q1" "X2019q2" "X2019q3"
Вы увидите, что они начинаются с X
, чтобы сделать имена действительными, а год и квартал разделены "q"
. Используйте это в качестве разделителя в pivot_longer
, чтобы разделить год и квартал, а затем удалите не цифру из года. При желании вы можете использовать dplyr::mutate
для преобразования столбцов в числовые значения.
library(tidyr)
d %>%
pivot_longer(everything(), names_to = c("Year", "Quarter"),
names_sep = "q", values_to = "Value") %>%
dplyr::mutate(Year = stringr::str_remove(Year, "\\D"))
#> # A tibble: 3 x 3
#> Year Quarter Value
#> <chr> <chr> <dbl>
#> 1 2019 1 1
#> 2 2019 2 2
#> 3 2019 3 3