微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何按 x 和 y 行合并两个数据框,但列应该并排 (df1$x) (df2$y)?

如何解决如何按 x 和 y 行合并两个数据框,但列应该并排 (df1$x) (df2$y)?

我有两个列名和行名相同的数据框。我想按行合并它们,但列需要从 df$x 和 df$y 开始并排。

到目前为止我尝试过但没有按要求获得输出

merge(df.test1,df.test2,by.x = "V1",by.y = "V1")

输出

    V1  2800M_15-0.5-1.x    2800M_15-0.5-2.x    2800M_15-0.5-3.x    cA_15-0.5-1.x   cA_15-0.5-2.x   2800M_15-0.5-1.y    2800M_15-0.5-2.y    2800M_15-0.5-3.y    cA_15-0.5-1.y   cA_15-0.5-2.y
1   RowA    1   1   1   1   1   1   1   1   1   1
2   RowB    1   1   1   1   1   1   1   1   1   1
3   RowC    1   1   1   1   1   1   1   1   1   1

所需输出

    V1  2800M_15-0.5-1.x    2800M_15-0.5-1.y    2800M_15-0.5-2.x    2800M_15-0.5-2.y    2800M_15-0.5-3.x    2800M_15-0.5-3.y    cA_15-0.5-1.x   cA_15-0.5-1.y   cA_15-0.5-2.x   cA_15-0.5-2.y
1   RowA    1   1   1   1   1   1   1   1   1   1
2   RowB    1   1   1   1   1   1   1   1   1   1
3   RowC    1   1   1   1   1   1   1   1   1   1

解决方法

一个选项是根据名称重新排序列,即列名称子串上的 order 没有 .x.y 末尾,并使用顺序索引作为用于重新排列列的列索引

out <- merge(df.test1,df.test2,by.x = "V1",by.y = "V1")
out1 <- out[c(1,order(sub("\\.[xy]$","",names(out)[-1])) + 1)]

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。