R-有没有一种方法可以根据具有不同列的另一个数据框来设置数据框的列顺序

时间:2019-09-01 15:35:01

标签: r dataframe

我想基于df1列顺序设置df2列顺序。我们应该注意: * df2中不存在的df2中的新列:应将这些列作为最后一列放置。 * df1中不存在的df1中的列:应创建并填充NA或空列。

可复制的示例:

df1 <- data.frame(x1=1:4, x2=c('a','b', NA, 'd'),x4=4:7, stringsAsFactors=FALSE)
df1[,(ncol(df1)+1):5] <- NA
df1 <- cbind(df1, x3=c(0,0,2,2))
df2 <- data.frame(x3=6:7, x2=c("zz", "qq"),x1=2:3, x66 = 66:67, x77 = 77:78, stringsAsFactors=FALSE)

预期的列顺序: “ x1”“ x2”“ x4”“ V4”“ V5”“ x3”“ x66”“ x77”

2 个答案:

答案 0 :(得分:2)

这是使用dplyr::bind_rows-

的一种简单方法
bind_rows(df1[NULL, ], df2)

  x1 x2 x4 V4 V5 x3 x66 x77
1  2 zz NA NA NA  6  66  77
2  3 qq NA NA NA  7  67  78

答案 1 :(得分:0)

这是一个COPY ../package*.json ./解决方案:

base

第一个命令根据df2[, setdiff(names(df1), names(df2))] <- NA df2[, union(names(df1), names(df2))] x1 x2 x4 V4 V5 x3 x66 x77 1 2 zz NA NA NA 6 66 77 2 3 qq NA NA NA 7 67 78 中存在的名称(而不是df1中存在的名称)添加新列。然后,第二条命令将根据您的需要重新排序。

相关问题