Я хочу построить цепочку зависимостей между разными географическими точками. Таблица содержит единственный столбец с путями, разделенными запятыми (,)
У меня есть набор данных с такой структурой:
library(tidyverse)
(df <- tribble(~chain,
"A,B,C,D",
"X,Y,Z"))
#> # A tibble: 2 x 1
#> chain
#> <chr>
#> 1 A,B,C,D
#> 2 X,Y,Z
Это то, что я ожидал:
tribble(~from, ~to,
"A", "B",
"B", "C",
"C", "D",
"X", "Y",
"Y", "Z")
# expected result
#> # A tibble: 5 x 2
#> from to
#> <chr> <chr>
#> 1 A B
#> 2 B C
#> 3 C D
#> 4 X Y
#> 5 Y Z
Это предлагаемое мной решение:
# my solution:
(routes <- df %>%
group_by(chain) %>%
summarise(destino = str_split(chain, ",")) %>%
mutate(
from = map(destino, ~ lag(.x)) %>%
map(~ .x[!is.na(.x)]),
to = map(destino, ~ lead(.x)) %>%
map(~ .x[!is.na(.x)])) %>%
select(from, to) %>%
unnest(cols = everything()))
#> # A tibble: 5 x 2
#> from to
#> <chr> <chr>
#> 1 A B
#> 2 B C
#> 3 C D
#> 4 X Y
#> 5 Y Z
Можно ли получить тот же результат другим способом? Может быть, с for l oop?
Создано 18.06.2020 с помощью пакета REPEX (v0.3.0)