说我有2个数据框

dfA <- data.frame(x = rpois(10,2), y = rpois(10,2), z = rpois(10,2), q = rpois(10,2), t = rpois(10,2))
dfB <- data.frame(a = rpois(10,2), b = rpois(10,2), c = rpois(10,2), d = rpois(10,2), e = rpois(10,2))

使用常规的merge(dfA, dfB),我按以下顺序获取具有列的数据框:x,y,z,q,t,a,b,c,d,e

如何合并数据框以按以下顺序获取包含列的数据框:

x,a,y,b,z,c,q,d,t,e

即。每个数据帧的第一列彼此相邻,然后是第二列,然后是第三列,依此类推。

最佳答案

一种选择是根据两个数据集连接的列顺序order

out <- merge(dfA, dfB)
out1 <- out[order(c(seq_along(dfA), seq_along(dfB)))]
names(out1)
#[1] "x" "a" "y" "b" "z" "c" "q" "d" "t" "e"

rbind列名,然后将其强制为vector,使其按matrix/data.frame中的自然列顺序折叠
out1 <- out[c(rbind(names(dfA), names(dfB)))]
names(out1)
#[1] "x" "a" "y" "b" "z" "c" "q" "d" "t" "e"

关于r - R如何以编织方式合并数据帧,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59794491/

10-14 15:46