我有2个数据帧df1和df2具有相同的列名,但在不同的列号。如何合并为df3而不创建额外的列/行。
df1
a b c
1 3 6
df2
b c a
5 6 1
expected df3
a b c
1 3 6
1 5 6
尝试下面的代码,但不工作
df3=merge(df1, df2, by = "col.names")
我们可以使用自动查找匹配列名的bind_rows
,如果它不存在,它将为那些不存在的NA
添加行。列的顺序将基于' bind_rows '中第一个数据集输入的顺序,即df1
library(dplyr)
bind_rows(df1, df2)
与产出
a b c
1 1 3 6
2 1 5 6
数据df1 <- structure(list(a = 1L, b = 3L, c = 6L), class = "data.frame", row.names = c(NA,
-1L))
df2 <- structure(list(b = 5L, c = 6L, a = 1L), class = "data.frame", row.names = c(NA,
-1L))
根据另一个数据框重新排列任何一个数据框的列,使两个列具有相同的列名顺序,然后使用rbind
。
rbind(df1, df2[names(df1)])
# a b c
#1 1 3 6
#2 1 5 6
在这种情况下,使用rbind(df1, df2)
也应该工作。