我想基于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”
答案 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
中存在的名称)添加新列。然后,第二条命令将根据您的需要重新排序。