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

时间:2019-11-30 01:28:05

标签: r

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

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

如果可能的话,我更喜欢一种tidyverse解决方案。

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))

3 个答案:

答案 0 :(得分:1)

不是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

答案 1 :(得分:1)

使用1?\D*(\d{3})\D*(\d{3})\D*(\d{4})\b

1-$1-$2-$3

答案 2 :(得分:0)

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

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