【问题标题】:join data frames in two separate lists R将数据框连接到两个单独的列表 R
【发布时间】:2016-02-03 22:19:25
【问题描述】:

我有 2 个列表,每个列表包含 6 个数据框。

listofdf_1 <- list(a, b, c, d, e, f)
listofdf_2 <- list(a2, b2, c2, d2, e2, f2)

我想inner_join 数据框 a 和 a2,b 和 b2,c 和 c2 等。 连接列是:ID1

我写了一个函数:

merge_on_id <- function(x, y, join_field) {
  require(dplyr)
  inner_join(x, y, by = join_field)
} 

现在我一一加入:merge_on_id(listofdf_1[[1]], listofdf_2[[1]], by = "ID1") 等。

我想知道是否有一种方法可以将所有六个元素加入一行,而不必为列表的每个元素重复。

【问题讨论】:

    标签: r list dataframe inner-join


    【解决方案1】:

    如果我们需要inner_join对应lists的元素,可以使用Map。

     Map(inner_join, listofdf_1, listofdf_2, MoreArgs=list(by='ID1'))
    

    数据

    listofdf_1 <- list(a= data.frame(ID1= LETTERS[1:3], Value= 1:3, stringsAsFactors=FALSE),
              b = data.frame(ID1= LETTERS[4:7], V1= 4:7, stringsAsFactors=FALSE))
    
    listofdf_2 <- list(a2= data.frame(ID1= LETTERS[1:5], Value= 6:10, stringsAsFactors=FALSE), 
          b2 = data.frame(ID1= LETTERS[4:9], V1= 4:9, stringsAsFactors=FALSE))
    

    【讨论】:

    • 谢谢! MAP 中的内部连接,是来自 dplyr 还是基础?
    • @vagabond 这是一个基本的 R 选项,但我们可以使用 dplyr 来做到这一点,可能需要几个步骤(我以为你想要一个步骤的答案)。
    • @vagabond 这取决于步数。此外,您可以使用system.time 或microbenchmark 来检查速度。
    猜你喜欢
    • 2022-08-20
    • 1970-01-01
    • 1970-01-01
    • 2020-03-28
    • 2014-10-08
    • 2021-07-26
    • 1970-01-01
    • 2021-02-18
    • 1970-01-01
    相关资源
    最近更新 更多