#r
#r
Вопрос:
Допустим, у меня есть два фрейма данных со следующими столбцами.
df1 <- data.frame("A.One"=1:10, "A.Two"=1:10, "A.Three"=1:10)
df2 <- data.frame("B.One"=1:10, "B.Two"=1:10, "B.Three"=1:10)
Я хочу связать их в определенном порядке (или связать их обычным образом и изменить их порядок для достижения этого порядка):
x <- magic_cbind(df1, df2)
colnames(x)
Желаемый результат:
A.One B.One A.Two B.Two A.Three B.Three
То есть я хочу, чтобы они были отсортированы по суффиксу — сначала у нас есть все единицы, затем все двойки, в соответствии с порядком, в котором они были изначально в каждом фрейме данных. Я надеюсь, что это объяснение имеет смысл…
Это кажется очень простым, но я не могу понять это, и я действительно не знаю, что искать, как вызвать этот порядок…
Комментарии:
1.
ggplot
имеет неэкспортируемую функцию, которая может помочь:as.data.frame(ggplot2:::interleave(df1, df2))
Ответ №1:
Мы могли бы использовать base R
для этого. После cbind
ввода наборов данных, только order
столбцы на основе объединенной последовательности каждого набора данных
cbind(df1, df2)[order(c(seq_along(df1), seq_along(df2)))]
Ответ №2:
Вот tidyverse
ответ. Привязка строк, используется select
для определения порядка столбцов.
df1 <- data.frame("A.One"=1:10, "A.Two"=1:10, "A.Three"=1:10)
df2 <- data.frame("B.One"=1:10, "B.Two"=1:10, "B.Three"=1:10)
df3 <- cbind(df1, df2) %>%
select(A.One, B.One, A.Two, B.Two, A.Three, B.Three)
Комментарии:
1. спасибо, но я забыл упомянуть, что я ищу решение, которое можно масштабировать для произвольного номера столбца