【问题标题】:Merging a list of data.frames with purrr (reduce/reduce2)将 data.frames 列表与 purrr (reduce/reduce2) 合并
【发布时间】:2020-02-12 10:44:51
【问题描述】:

这是我的数据:

list_of_data <- list(mtcars[1:26,], mtcars[4:22,], mtcars[3:15,])

我想按行名合并所有数据框。

Merging a lot of data.frames

我知道Reduce 非常适合解决此类问题,但我无法进入我的purrr 工作流程。谁能帮帮我?

我什至不确定reducereduce2 是否适合让它工作。 这是我的尝试,但它不起作用:

list_of_data %>%
    map(~select(.x, c(cyl, wt))) %>%
    reduce2(~merge(.x, .y,  all=TRUE))

【问题讨论】:

    标签: r merge dplyr purrr


    【解决方案1】:

    如果我理解正确,您的意图是什么:

    library(tibble)
    library(purrr)
    library(dplyr)
    
    list_of_data %>% 
      map(~select(.x, cyl, wt)) %>% 
      map(rownames_to_column) %>% 
      reduce(full_join, by = "rowname")
    

    我们可以使用dplyr::full_joinpurrr::reduce 来合并多个数据帧。但是为了能够按行名合并,首先我们需要将它们写入一列。 tibble::rownames_to_column 就是这样做的。默认情况下,该列称为“行名”。

    【讨论】:

      猜你喜欢
      • 2018-12-24
      • 2019-07-03
      • 1970-01-01
      • 1970-01-01
      • 2021-08-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-08
      • 2011-06-19
      相关资源
      最近更新 更多