簡體   English   中英

在 dplyr/purrr 工作流中動態加入多個數據集

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM