У меня есть такая таблица
table(mtcars$gear, mtcars$cyl)
Я хочу ранжировать ряды по тем, у которых больше наблюдений в 4 цилиндре. Например.
4 6 8
4 8 4 0
5 2 1 2
3 1 2 12
Я играл с порядком / сортировкой / рангом без особого успеха. Как я могу заказать вывод таблиц?
3 ответа
Мы можем преобразовать table
в data.frame
, а затем order
по столбцу.
sort_col <- "4"
tab <- as.data.frame.matrix(table(mtcars$gear, mtcars$cyl))
tab[order(-tab[sort_col]), ]
# OR tab[order(tab[sort_col], decreasing = TRUE), ]
# 4 6 8
#4 8 4 0
#5 2 1 2
#3 1 2 12
Если мы не хотим преобразовывать его во фрейм данных и хотим сохранить структуру table
, мы можем сделать
tab <- table(mtcars$gear, mtcars$cyl)
tab[order(-tab[,dimnames(tab)[[2]] == sort_col]),]
# 4 6 8
# 4 8 4 0
# 5 2 1 2
# 3 1 2 12
Могли бы попробовать это. Используйте sort
для соответствующего столбца, указав decreasing=TRUE
; взять names
отсортированных строк и подмножеств, используя их.
table(mtcars$gear, mtcars$cyl)[names(sort(table(mtcars$gear, mtcars$cyl)[,1], dec=T)), ]
4 6 8
4 8 4 0
5 2 1 2
3 1 2 12
В той же области, что и в Милане, но с использованием функции order()
вместо поиска names()
в sort()
редактируемом списке. [,1]
должен смотреть на первый столбец при заказе.
table(mtcars$gear, mtcars$cyl)[order(table(mtcars$gear, mtcars$cyl)[,1], decreasing=T),]
Похожие вопросы
Новые вопросы
r
R - это бесплатный язык программирования с открытым исходным кодом и программная среда для статистических вычислений, биоинформатики, визуализации и общих вычислений. Пожалуйста, предоставьте минимальные и воспроизводимые примеры вместе с желаемым результатом. Используйте dput () для данных и укажите все небазовые пакеты с вызовами library (). Не вставляйте изображения для данных или кода, вместо этого используйте блоки кода с отступом. По вопросам, связанным со статистикой, используйте https://stats.stackexchange.com.