Забудьте пока часть фрейма данных. Вот пример вектора, который вы хотите заказать
x <- paste(
rep.int(LETTERS[1:3], 16),
rep.int(1:16, 3),
sep = ""
)
y <- sample(x)
Просто звонок sort(y)
не сработает, потому что номер отсортирован в лексографическом порядке, поэтому вы получите что-то вроде A1, A10, A11, ...
Вместо этого используйте substring
, чтобы разбить столбец на буквы и цифры.
indexer <- data.frame(
letter = substring(y, 1, 1),
number = as.numeric(substring(y, 2))
)
Затем, как предложил aL3xa, позвоните order
, чтобы упорядочить результирующий кадр данных.
o <- with(indexer, order(letter, number))
y[o]
Чтобы заставить это работать с фреймом данных, просто замените y
на your_data$index_column
.