在dplyr/purrr工作流中动态连接多个数据集

在dplyr/purrr工作流中动态连接多个数据集,r,dplyr,purrr,R,Dplyr,Purrr,我有两个不同年份的列表,其中包含多个数据帧: df_18 <- results_2018[[1]] %>% select(Answers, Austria) df_19 <- results_2019[[1]] %>% select(Answers, Austria) 我需要对两个列表中的每个元素的“答案”类别进行完全联接 它应该是这样的,但是对于列表中的每个数据集,结果也应该是一个数据帧列表 这是我每年一个元素的代码: dplyr::full

我有两个不同年份的列表,其中包含多个数据帧:

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

df_19 <- results_2019[[1]] %>%
    select(Answers, Austria)
我需要对两个列表中的每个元素的“答案”类别进行完全联接

它应该是这样的,但是对于列表中的每个数据集,结果也应该是一个数据帧列表

这是我每年一个元素的代码:

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"))
有人能帮我做到这一点吗


谢谢:)

如果我们对两个
列表的相应元素执行此操作,请使用
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")))

是,每个元素都有相同的列。在这种情况下,总是对一个奥地利进行一年的比较:)你在编辑工作之前发布的代码,这一个给了我在is_Close(x)中的
错误:找不到对象“答案”
@DataMastery抱歉,我的错误。我正在考虑
select
,但没有看到
set\u names
谢谢,现在效果很好。你这么快就想出了解决办法,真是疯了。
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")))