我有两个数据帧,比如df1和df2,我需要rbind。
DF1如下所示:
a b c
1 11 21
2 12 22
3 13 23
DF2如下所示:
b a d
14 4 31
15 5 32
16 6 33
a,b,c,d是列名。
我想要输出如下:
a b c d
1 11 21 31
2 12 22 32
3 13 23 33
4 14
5 15
6 16
现在,我试试
final< - rbind(df1,df2)
可以在r?
中完成答案 0 :(得分:1)
NM = unique(c(names(df1), names(df2)))
mylist = setNames(lapply(NM, function(nm) c(df1[[nm]], df2[[nm]])), NM)
data.frame(lapply(mylist, function(x) x[1:max(lengths(mylist))]))
# a b c d
#1 1 11 21 31
#2 2 12 22 32
#3 3 13 23 33
#4 4 14 NA NA
#5 5 15 NA NA
#6 6 16 NA NA
也可以尝试
merge(df1, df2, all = TRUE)
和
data.table::rbindlist(list(df1, df2), use.names = TRUE, fill = TRUE)
数据强>
df1 = structure(list(a = 1:3, b = 11:13, c = 21:23), .Names = c("a",
"b", "c"), class = "data.frame", row.names = c(NA, -3L))
df2 = structure(list(b = 14:16, a = 4:6, d = 31:33), .Names = c("b",
"a", "d"), class = "data.frame", row.names = c(NA, -3L))
答案 1 :(得分:0)
从smartbind()
包中尝试gtools
功能。它可用于组合具有不同列的数据集。
答案 2 :(得分:0)
我建议bind_rows
包中的dplyr
:
library(dplyr)
bind_rows(df1, df2)
它非常简单,dplyr
是一个具有很多实用程序的包,所以你应该能够为任何项目挤出更多的用途而不仅仅是这个单一的功能。