如何按 x 和 y 的行合并两个数据框,但列应该并排 (df1$x) 并排 (df2$y)?
how to merge two data frame by rows of x and y but columns should be side (df1$x) by side (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)]
我有两个列名和行名相同的数据框。我想按行合并它们,但从 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)]