Общая картина: я пытаюсь настроить экспорт, который имеет один маршрут в виде строки и столбцов для каждого значения.
Этот код: я пытаюсь выбрать три верхние передачи для каждого маршрута(используя slice(1:3)
, потому что мне нужно не более трех значений. top_n()
допускает связи).Затем я пытаюсь spread()
создать 6 столбцов: имя и pct для каждого.
Если бы я распространял данные прямо сейчас, имена стали бы столбцами, но мне нужно сохранитьимена в строках (см. желаемый вывод).Я хочу создать имена столбцов в качестве ключевого столбца для использования в spread()
.Мой подход создает ошибку.У меня возникают проблемы при мысли о другой стратегии.
Фрейм данных:
# A tibble: 7 x 3
route_shortname transfer_to pct
<chr> <chr> <dbl>
1 A D 0.5
2 A E 0.5
3 B F 0.667
4 B G 0.333
5 C D 0.111
6 C E 0.111
7 C G 0.111
Желаемый результат:
# A tibble: 3 x 7
route_shortname transfer1 transfer1_pct transfer2 transfer2_pct transfer3 transfer3_pct
<chr> <chr> <dbl> <chr> <dbl> <chr> <dbl>
1 A D 0.5 E 0.5 NA NA
2 B F 0.667 G 0.333 NA NA
3 C D 0.111 E 0.111 G 0.111
Представляет:
library(tidyverse)
sample_data <- tibble::tribble(
~route_shortname, ~transfer_to, ~pct,
"A", "D", 0.5,
"A", "E", 0.5,
"B", "F", 0.666666666666667,
"B", "G", 0.333333333333333,
"C", "D", 0.111111111111111,
"C", "E", 0.111111111111111,
"C", "G", 0.111111111111111
)
transfer_to_table <- sample_data %>%
group_by(route_shortname) %>%
mutate(key = c("transfer1", "transfer2", "transfer3"))
#> Error in mutate_impl(.data, dots): Column `key` must be length 2 (the group size) or one, not 3