#r #dplyr #multidplyr
#r #dplyr #multidplyr
Вопрос:
У меня есть два фрейма данных с одинаковыми именами столбцов и строк. Я хотел бы объединить их по строкам, но столбцы должны быть рядом с 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
Ответ №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)]
Комментарии:
1. Потрясающий Акрун, почему я об этом не подумал. Я приму ответ через 9 минут в соответствии с условием стекового потока. LOL, спасибо.