在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")))