[英]Dynamically join multiple datasets in a dplyr/purrr workflow
我有兩個包含多個數據框的兩個不同年份的列表:
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"))
誰能幫我實現這個目標?
謝謝:)
如果我們對兩個list
的相應元素執行此操作,請使用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")))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.