将数据帧列表按所有行合并为单个数据帧

问题描述 投票:0回答:1

我有一个数据帧列表,看起来像这样:

df1

col1   col2
house.  10
cat.    5
dog     7
mouse   4

df2

    col1   col2
    house.   6
    apple.   4
    dog      8
    elephant 3

df3

    col1   col2
    horse    1
    banana   1
    dog      8

所需的输出将是:

          df1.  df2.  df3
house.     10     6.    NA
cat        5      NA.   NA
dog        7      8     8
mouse.     4.     NA.   NA
apple.     NA     4.    NA
elephant.  NA     3.    NA
horse.     NA.    NA.   1
banana.    NA.    NA.   1  

有任何建议吗?

我尝试执行以下操作:

list_df<-list(df1,df2,df3)
df_all<-do.call("rbind", list_df)
df_merge<-as.data.frame(unique(df_all$col1))
colnames(df_merge)<-"category"

df_merge$df1 <- with(df_merge, ifelse (category %in% df1$col1,df1$col2,NA))

但是,当我添加第二个数据帧时,出现此错误:$运算符对原子向量无效]

r
1个回答
1
投票

使用dplyr

library(dplyr)
df <- dplyr::full_join(df1, df2, by = "col1")
df <- dplyr::full_join(df, df3, by = "col1")

df %>% 
  column_to_rownames(var = "col1")

#          col2.x col2.y col2
#house.       10      6   NA
#cat.          5     NA   NA
#dog           7      8    8
#mouse         4     NA   NA
#apple.       NA      4   NA
#elephant     NA      3   NA
#horse        NA     NA    1
#banana       NA     NA    1
© www.soinside.com 2019 - 2024. All rights reserved.