Я хочу отсортировать все столбцы фрейма данных в R по столбцу, содержащему буквенно-цифровые данные. Вот пример фрейма данных:
R> dd <- data.frame(b = c("Hi", "Med", "Hi", "Low"),
x = c("A", "D", "A", "C"), y = c(8, 3, 9, 9),
z = c("A1", "A3", "A10", "A2"))
1 Hi A 8 A1
2 Med D 3 A3
3 Hi A 9 A10
4 Low C 9 A2
Я бы хотел отсортировать весь фрейм данных по столбцу z. Желаемый результат выглядит следующим образом: информация по столбцам остается согласованной:
1 Hi A 8 A1
2 Low C 9 A2
3 Med D 3 A3
4 Hi A 9 A10
Вот методы, которые я пробовал до сих пор, но они не сработали:
Метод 1: неправильно отсортирована «A10»
R> dd<- dd[with(dd, order(z)), ]
R> View(dd)
1 Hi A 8 A1
4 Hi A 9 A10
2 Low C 9 A2
3 Med D 3 A3
Метод 2 : сортировка не выполнена
R> library(gtools)
R> dd$z = factor(dd$z, levels = gtools::mixedsort(dd$z))
R> View(dd)
1 Hi A 8 A1
2 Med D 3 A3
3 Hi A 9 A10
4 Low C 9 A2
Метод 3: сортировка не выполнена
R> library(stringr);
R> dd$z = factor(dd$z, levels = str_sort(dd$z, numeric=TRUE))
R> View(dd)
1 Hi A 8 A1
2 Med D 3 A3
3 Hi A 9 A10
4 Low C 9 A2