我有两个长度不相等的数据帧,我想与特定的 NA 放置相结合

  • 本文关键字:NA 相结合 数据帧 两个 不相等 r
  • 更新时间 :
  • 英文 :


对不起,标题不好。这是我能想到的最好的。

我有两个数据帧要合并(df1 和 df2(。 df1 的长度与 df2 不同。我不希望有关 df1 的信息与 df2 在同一行。我想用 NA 填充其余的空白空间。

如果可能的话,我更喜欢整洁的解决方案。

DF1 和 DF2:

df1 <- data.frame(Alpha = c(2,2),
Bravo = c(3,3))
df2 <- data.frame(Charlie = c(1,1,1),
Delta = c(2,2,2))

这是我想要的:

df3 <- data.frame(Alpha = c(2,2,NA,NA,NA),
Bravo = c(3,3,NA,NA,NA),
Charlie = c(NA, NA, 1,1,1),
Delta = c(NA, NA, 2,2,2))

dplyr

bind_rows(df1, df2)
Alpha Bravo Charlie Delta
1     2     3      NA    NA
2     2     3      NA    NA
3    NA    NA       1     2
4    NA    NA       1     2
5    NA    NA       1     2

不是tidyverse解决方案,而是基本 R 解决方案。

一种方法是根据输入数据帧重建新数据帧。

final <- as.data.frame(matrix(NA, nrow = nrow(df1) + nrow(df2), 
ncol = ncol(df1) + ncol(df2), dimnames = list(NULL, c(names(df1), names(df2)))))
final[1:nrow(df1), names(df1)] <- df1
final[(nrow(df1) + 1):nrow(final), names(df2)] <- df2
final
#  Alpha Bravo Charlie Delta
#1     2     3      NA    NA
#2     2     3      NA    NA
#3    NA    NA       1     2
#4    NA    NA       1     2
#5    NA    NA       1     2

我们可以使用data.table中的rbindlist

library(data.table)
rbindlist(list(df1, df2))

最新更新