Как отсортировать таблицу as.data.frame - PullRequest
0 голосов
/ 16 сентября 2018

Чтобы попытаться получить частоту переменной в столбце, я использовал следующий код:

s = table(students$Sport)
t = as.data.frame(s)
names(t)[1] = 'Sport'
t

Хотя это работает, он дает мне огромный список, который не отсортирован, например:

1            Football             20310
2            Rugby                80302
3            Tennis               5123
4            Swimming             73132
…            …                    … 
68           Basketball           90391

Как мне отсортировать этот стол, чтобы самый распространенный вид спорта был на вершине.Кроме того, есть ли способ отображать только 5 лучших вариантов?Вместо всех 68 различных видов спорта?

Или, альтернативно, если есть лучший способ приблизиться к этому.

Любая помощь будет оценена!

Ответы [ 2 ]

0 голосов
/ 16 сентября 2018

Вы можете использовать функцию подсчета пакетов plyr для подсчета слов и частоты.Более элегантный способ сделать это по сравнению с преобразованием его в фрейм данных.

library(plyr)
d<-count(students,"Sport") #convert it to a dataframe first before using count.

Функция заказа поможет вам упорядочить вывод.использование - делает сортировку в порядке убывания.[1: 5] дает вам 5 лучших строк.Вы можете удалить его, если хотите все записи.

d[order(-d$freq)[1:5],]
0 голосов
/ 16 сентября 2018

вы можете использовать dplyr и делать все это в одной строке, под примером

library(dplyr)
students = data.frame(sport = c(rep("Football", 200), 
                            rep("Rugby", 130), 
                            rep("Tennis", 100), 
                            rep("Swimming", 40),
                            rep("Basketball", 10),
                            rep("Baseball", 300),
                            rep("Gimnastics", 70)
                            )
                  )
students %>% group_by(sport) %>% summarise( n = length(sport)) %>% arrange(desc(n)) %>% top_n(5, n)

# A tibble: 5 x 2
sport          n
  <fct>      <int>
1 Baseball     300
2 Football     200
3 Rugby        130
4 Tennis       100
5 Gimnastics    70
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...