Динамическое объединение нескольких наборов данных в рабочем процессе dplyr / purrr - PullRequest
1 голос
/ 12 февраля 2020

У меня есть два списка двух разных лет с несколькими фреймами данных:

df_18 <- results_2018[[1]] %>%
        select(Answers, Austria)

df_19 <- results_2019[[1]] %>%
    select(Answers, Austria)

Они выглядят примерно так:

structure(list(Answers = c("45 to 54", "25 to 34", "35 to 44", 
"55 to 64", "16 to 24"), Austria = c(23.3, 21.5, 20.8, 15.6, 
18.8)), row.names = c(NA, -5L), class = "data.frame")

structure(list(Answers = c("45 to 54", "35 to 44", "25 to 34", 
"16 to 24", "55 to 64"), Austria = c(23.4, 20.7, 21.4, 18.7, 
15.8)), row.names = c(NA, -5L), class = "data.frame")

Мне нужно выполнить полное объединение на Категория «Ответ» для каждого элемента в обоих списках.

Это должно выглядеть следующим образом, но для каждого набора данных в списке и результатом также должен быть список данных.

Это мой Код для одного элемента каждого года:

dplyr::full_join(df_18, df_19, by="Answers") %>%
    mutate(Difference = Austria.y - Austria.x) %>%
    rename_at(vars(contains(".x")), ~str_replace(.x, ".x", "_2018")) %>%
    rename_at(vars(contains(".y")), ~str_replace(.x, ".y", "_2019")) %>%
    set_names(c("Answers", "Austria_2018", "Austria_2019", "Difference"))

Может ли кто-нибудь помочь мне достичь этого?

Спасибо:)

1 Ответ

1 голос
/ 12 февраля 2020

Если мы делаем это для соответствующих элементов двух list s, используйте map2

library(purrr)
library(dplyr)
library(stringr)
map2(results_2018, results_2019, ~ 
              full_join(.x %>% select(Answers, Austria),
                                 .y %>% select(Answers, Austria),
                         by = "Answers") %>%
                mutate(Difference = Austria.y - Austria.x) %>%
               rename_at(vars(contains(".x")),
                      ~str_replace(., ".x", "_2018")) %>%
               rename_at(vars(contains(".y")),
                     ~str_replace(., ".y", "_2019")) %>%
               set_names(c("Answers", "Austria_2018", "Austria_2019", "Difference")))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...