1

我有两个具有相同名称的列和行的数据框。我想按行合并它们,但从 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
4

1 回答 1

0

一个选项是根据名称重新排序列,即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)]
于 2021-02-23T21:51:54.610 回答