У меня есть такие данные, что есть набор столбцов идентификаторов, а затем несколько значений временных рядов.
data.frame(id = c("x", "y", "z"),
year_1_a = c(1, 2, 3),
year_2_a = c(4, 5, 6),
year_1_b = c(6, 7, 8),
year_2_b = c(3, 4, 5), stringsAsFactors = F)
Я ищу способ преобразовать данные в более длинный формат, в котором идентификатор будет дублируется, в качестве ключа будет новый столбец, и у меня будет только один «набор» лет со значениями.
Ожидаемый результат:
data.frame(id = c("x","x", "y", "y", "z", "z"),
key = c('a', 'b'),
year_1 = c(1, 6, 2, 7, 3, 8),
year_2 = c(4, 3, 5, 4, 6, 5), stringsAsFactors = F)
Я искал pivot_longer
но это делает код слишком длинным со строкой для каждого года и значения. Я думаю, что лучший способ - это разделить данные на две dfs, а затем rbind
, но мне было интересно, есть ли лучший способ без создания промежуточных фреймов данных.