【问题标题】:unlist and merge into a single dataframe in r取消列出并合并到 r 中的单个数据框
【发布时间】:2018-08-04 00:15:47
【问题描述】:

我有一个需要组合成一个的数据框列表。

year<-1990:2000
v1<-1:11
v2<-20:30
df1<-data.frame(year,v1)
df2<-data.frame(year,v2)
ldf<-list(df1,df2)

我现在想取消列出此数据框并获取

> head(df)
   year v1 v2
1  1990  1 20
2  1991  2 21
3  1992  3 22
4  1993  4 23

请注意,我的问题与类似问题中提供的解决方案不同,该问题的解决方案是:`df

因为我本质上正在寻找的是一种更自动的方法:df&lt;-merge(df1,df2, by="year")

【问题讨论】:

    标签: r list dataframe merge


    【解决方案1】:

    有什么问题吗:

    df <- merge(ldf[[1]], ldf[[2]], by="year")
    

    或者对于一个很长的列表:

    df1 <- ldf[[1]]
    for (x in 2:length(ldf)) {
      df1 <- merge(df1, ldf[[x]])
    }
    # year v1 v2
    # 1  1990  1 20
    # 2  1991  2 21
    # 3  1992  3 22
    # 4  1993  4 23
    # 5  1994  5 24
    # 6  1995  6 25
    # 7  1996  7 26
    # 8  1997  8 27
    # 9  1998  9 28
    # 10 1999 10 29
    # 11 2000 11 30
    

    【讨论】:

    • 完全没有,我只是认为这可能是一种类似的 rbind 方法 :)
    【解决方案2】:

    由于list 元素的数量更多,一个方便的选择是reduce 与其中一个连接函数

    library(tidyverse)
    ldf %>%
         reduce(inner_join, by = "year")
    #   year v1 v2
    #1  1990  1 20
    #2  1991  2 21
    #3  1992  3 22
    #4  1993  4 23
    #5  1994  5 24
    #6  1995  6 25
    #7  1996  7 26
    #8  1997  8 27
    #9  1998  9 28
    #10 1999 10 29
    #11 2000 11 30
    

    【讨论】:

      猜你喜欢
      • 2014-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-11
      • 2021-12-10
      • 1970-01-01
      • 2019-01-07
      • 2016-06-25
      相关资源
      最近更新 更多