Возможно, это простой вопрос, но я не знаю, как расположить столбцы в алфавитном порядке.
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 переменными. Так что процесс нужно автоматизировать.
test[ order(names(test)) ]
colnames
: он заканчивает вызовnames
дляdata.frame
.Вот обязательный
dplyr
ответ на тот случай, если кто-то захочет сделать это с трубкой.источник
test%>%select(b,sort(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")]
источник
сортировка по именам столбцов может работать легко.
источник
Если вам нужен только один или несколько столбцов впереди и вам не важен порядок остальных:
require(dplyr) test %>% select(B, everything())
источник
Итак, чтобы сначала был конкретный столбец, а затем остальные в алфавитном порядке, я бы предложил следующее решение:
test[, c("myFirstColumn", sort(setdiff(names(test), "myFirstColumn")))]
источник
Альтернативный вариант - использовать строку
str_sort()
из библиотеки с аргументом . Это позволит правильно упорядочить столбцы, которые включают числа не только в алфавитном порядке :numeric = TRUE
str_sort(c("V3", "V1", "V10"), numeric = TRUE)
# [1] V1 V3 V11
источник
Подобен другому синтаксису выше, но для обучения - можно ли сортировать по именам столбцов?
sort(colnames(test[1:ncol(test)] ))
источник
[1:ncol(test)]
ничего не делается, это просто более длинный способ писатьsort(colnames(test))
.Вот что я обнаружил, чтобы достичь аналогичной проблемы с моим набором данных.
Во-первых, сделайте то, что Джеймс упомянул выше, т.е.
Во-вторых, используйте функцию all () в dplyr для перемещения определенных интересующих столбцов (например, «D», «G», «K») в начало фрейма данных, помещая столбцы в алфавитном порядке после этих.
источник