如何绑定两个具有不同变量的数据框

时间:2021-02-12 16:15:43

标签: r

我有一个如下所示的数据集:

enter image description here

我想合并这两个数据集。我怎样才能做到这一点。我不能使用 rbind,因为 df 有更多变量。 可以使用代码构建示例数据:

df<-structure(list(ID = c(1, 2, 3), High = c(25, 36, 75), weight = c(38, 
58, 36), date = c(1, 1, 1)), row.names = c(NA, -3L), class = c("tbl_df", 
"tbl", "data.frame"))

df2<-structure(list(ID = c(1, 2, 3, 1, 2, 3), weight = c(69, 58, 35, 
65, 24, 15), date = c(3, 3, 3, 2, 2, 2)), row.names = c(NA, -6L
), class = c("tbl_df", "tbl", "data.frame"))

最终结果应该是这样的: enter image description here

3 个答案:

答案 0 :(得分:2)

如果您的数据集很大,请尝试使用 data.table 包进行此类操作。如果您想了解更多信息,Here 是一个小插图。

这是使用 data.table 包的代码:

library(data.table)
setDT(df)
setDT(df2)

result<-rbindlist(list(df,df2),fill=T)

请注意,允许行不同的关键参数是 fill=TRUE

答案 1 :(得分:1)

您可以使用 bind_rows() 中的 dplyr

df1 <- tibble::tribble(
  ~ID, ~High, ~weight, ~date, 
  1, 25, 38, 1,
  2, 36, 58, 1,
  3, 75, 36, 1
)

df2 <- tibble::tribble(
  ~ID, ~weight, ~date, 
  1, 69, 3,
  2, 58, 3, 
  3, 35, 3, 
  1, 65, 2, 
  2, 24, 2,
  3, 15, 2
)


bind_rows(df1, df2)
# # A tibble: 9 x 4
#      ID  High weight  date
#   <dbl> <dbl>  <dbl> <dbl>
# 1     1    25     38     1
# 2     2    36     58     1
# 3     3    75     36     1
# 4     1    NA     69     3
# 5     2    NA     58     3
# 6     3    NA     35     3
# 7     1    NA     65     2
# 8     2    NA     24     2
# 9     3    NA     15     2

答案 2 :(得分:1)

这是您预期的输出吗?

> merge(df1, df2, all = TRUE)
  ID weight date High
1  1     38    1   25
2  1     65    2   NA
3  1     69    3   NA
4  2     24    2   NA
5  2     58    1   36
6  2     58    3   NA
7  3     15    2   NA
8  3     35    3   NA
9  3     36    1   75