对不起,标题不好。这是我能想到的最好的。
我有两个要合并的数据帧(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))
答案 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))