Сортировка столбцов фрейма данных по имени столбца
это, возможно, простой вопрос, но я не знаю, как упорядочить столбцы в алфавитном порядке.
test = data.frame(C = c(0, 2, 4, 7, 8), A = c(4, 2, 4, 7, 8), B = c(1, 3, 8, 3, 2))
# C A B
# 1 0 4 1
# 2 2 2 3
# 3 4 4 8
# 4 7 7 3
# 5 8 8 2
мне нравится упорядочивать столбцы по именам столбцов в алфавитном порядке, чтобы достичь
# A B C
# 1 4 1 0
# 2 2 3 2
# 3 4 8 4
# 4 7 3 7
# 5 8 2 8
для других я хочу свой собственный определенный порядок:
# B A C
# 1 4 1 0
# 2 2 3 2
# 3 4 8 4
# 4 7 3 7
# 5 8 2 8
обратите внимание, что мои наборы данных огромны, с 10000 переменных. Поэтому процесс должен быть более автоматизирован.
5 ответов:
можно использовать
orderнаnames, и используйте это, чтобы упорядочить столбцы при подмножестве:test[ , order(names(test))] A B C 1 4 1 0 2 2 3 2 3 4 8 4 4 7 3 7 5 8 2 8для вашего собственного определенного порядка вам нужно будет определить свое собственное сопоставление имен с порядком. Это будет зависеть от того, как вы хотели бы это сделать, но замена любой функции на это с помощью
orderвыше должен дать желаемый результат.вы можете, например, взглянуть на упорядочить строки фрейма данных в соответствии с целевым вектором, который указывает требуемый порядок, т. е. вы можете
matchваш фрейм данныхnamesпротив целевого вектора, содержащего нужный порядок столбцов.
test = data.frame(C=c(0,2,4, 7, 8), A=c(4,2,4, 7, 8), B=c(1, 3, 8,3,2))С помощью простой следующей функции замена может быть выполнена (но только если фрейм данных не имеет много столбцов):
test <- test[, c("A", "B", "C")]для остальных:
test <- test[, c("B", "A", "C")]
вот обязательно
dplyrответьте, если кто-то хочет сделать это с трубой.test %>% select(sort(names(.)))
вот что я узнал, чтобы достичь аналогичной проблемы с моим набором данных.
во-первых, сделайте то, что Джеймс упоминал выше, т. е.
test[ , order(names(test))]select(test, D, G, K, everything())
Comments