【问题标题】:Combine two lists into a single data frame, preserving row names将两个列表合并到一个数据框中,保留行名
【发布时间】:2019-11-22 20:45:47
【问题描述】:

所以我有两个列表:

列表 X 有 5 行长,格式如下:

Thing1 1
Thing2 2
Thing3 3
Thing4 4
Thing5 5

列表 Y 也是五行:

Thing1 A
Thing2 B
Thing3 C
Thing4 D
Thing5 E

我想要的输出是一个数据框:

Things X Y
Thing1 1 A
Thing2 2 B
Thing3 3 C
Thing4 4 D
Thing5 5 E

实际上有 500 多个“事物”,所以我不能在代码中全部命名。

帮助我了解如何执行此操作。我彻底迷路了。

谢谢!

【问题讨论】:

标签: r dataframe


【解决方案1】:

如果我理解您的问题,我会使用事物作为连接值对数据进行连接。

library(dplyr)
a <- data.frame( name = c('thing1','thing2','thing3','thing4','thing5'),
             X = 1:5 )
b <- data.frame(name = c('thing1','thing2','thing3','thing4','thing5'),
            Y = c('A','B','C','D','E'))

a %>% inner_join(b , by = c('name'= 'name'))

       name X Y
   1 thing1 1 A
   2 thing2 2 B
   3 thing3 3 C
   4 thing4 4 D
   5 thing5 5 E

【讨论】:

    【解决方案2】:

    只需使用merge

      a <- list(things=c('Things1','Things2','Things3'),Y=c('A','B','C')) 
      b <- list(things=c('Things1','Things2','Things3'),X=c(1,2,3))
      merge(a,b,by='things')
    
    
       things  Y  X
    1 Things1  A  1
    2 Things2  B  2
    3 Things3  C  3
    

    【讨论】:

    • 最后一行需要 as.data.frame(merge(a,b,by='things')) 吗?
    • 我不这么认为。 merge 返回data.frame
    猜你喜欢
    • 2015-09-17
    • 1970-01-01
    • 1970-01-01
    • 2017-12-24
    • 2013-02-28
    • 2015-04-18
    • 1970-01-01
    • 2022-06-20
    • 1970-01-01
    相关资源
    最近更新 更多