将数据框与空数据帧中的列名合并

时间:2015-08-10 20:03:28

标签: r dplyr

我有两个df s(dfdf2)。 虽然df没有列名,但df2却有。

但是,

df2是空的:

set.seed(1)
df <- data.frame(
    ID = 1:5,
    DOG = replicate(5, rbinom(1, 1, 0.5)), 
    CAT = replicate(5, rbinom(1, 1, 0.5)),
    FISH = replicate(5, rbinom(1, 1, 0.5)))

df2 <- data.frame(matrix(, nrow=0, ncol=7))
names(df2) <- c("DOG", "CAT", "FISH", "CRANE", "PIG", "SHARK", "DEER")

我想“合并”两个数据帧而不将任何内容匹配在一起。我基本上只希望df包含df2中的所有列,但NA - 编辑。

期望的输出:

ID DOG CAT FISH CRANE PIG SHARK DEER
1   0   1    0    NA  NA    NA   NA
2   0   1    0    NA  NA    NA   NA
3   1   1    1    NA  NA    NA   NA  
4   1   1    0    NA  NA    NA   NA
5   0   0    1    NA  NA    NA   NA

2 个答案:

答案 0 :(得分:4)

我们可以使用bind_rows

library(dplyr)
bind_rows(df2, df)
#  DOG CAT FISH CRANE PIG SHARK DEER
#1   0   1    0    NA  NA    NA   NA
#2   0   1    0    NA  NA    NA   NA
#3   1   1    1    NA  NA    NA   NA
#4   1   1    0    NA  NA    NA   NA
#5   0   0    1    NA  NA    NA   NA

答案 1 :(得分:1)

基础套餐:

$("#uib-justgage-3").attr('data-gauge','new value')

输出:

merge(df, df2, all = TRUE, sort = FALSE)

保留列的顺序:

  DOG CAT FISH ID CRANE PIG SHARK DEER
1   0   1    0  1    NA  NA    NA   NA
2   0   1    0  2    NA  NA    NA   NA
3   1   1    1  3    NA  NA    NA   NA
4   1   1    0  4    NA  NA    NA   NA
5   0   0    1  5    NA  NA    NA   NA

输出:

merge(df, df2, all =TRUE, sort = FALSE)[, union(names(df), names(df2))]

使用 ID DOG CAT FISH CRANE PIG SHARK DEER 1 1 0 1 0 NA NA NA NA 2 2 0 1 0 NA NA NA NA 3 3 1 1 1 NA NA NA NA 4 4 1 1 0 NA NA NA NA 5 5 0 0 1 NA NA NA NA

sqldf

输出:

library(sqldf)
sqldf("SELECT * FROM df
      LEFT JOIN df2
      USING(DOG, CAT, FISH)")