按计数对R中的表进行排序

Chr*_*ris 1 sorting r dataframe dplyr

我在R中创建了一个函数来创建一个提供计数和百分比的表:

tblFun <- function(x){
tbl <- table((x))
res <- cbind(tbl,round(prop.table(tbl)*100,0))
colnames(res) <- c('Count','Percentage')
res}
Run Code Online (Sandbox Code Playgroud)

然后执行它我在我的数据集中的一个字段运行它并使用kable输出:

region <-tblFun(mtcars$mpg)
knitr::kable(region)
Run Code Online (Sandbox Code Playgroud)

这给出了一个按因子名称排序的表,但是我想按计数或百分比排序. 在此输入图像描述

我已经尝试过我所知道的排序功能.我无法使用tidyverse库函数,因为它们不会给我正确的百分比:

library(dplyr)
region <- na.omit(mtcars) %>% 
  group_by(mtcars$mpg) %>%
  summarize(Count=n()) %>%
  mutate(Percent = round((n()/sum(n())*100))) %>%
  arrange(desc(Count))
knitr::kable(region)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

任何人的修复将不胜感激.

San*_*osh 5

我刚刚修改了你的代码,如下所示.你只需要count而不是n():

library(dplyr)
na.omit(mtcars) %>% 
  group_by(mtcars$mpg) %>%
  summarize(Count=n()) %>%
  mutate(Percent = round((Count/sum(Count)*100))) %>%
  arrange(desc(Count))


 # A tibble: 25 x 3
 #     `mtcars$mpg` Count Percent
 #           <dbl> <int>   <dbl>
 # 1         10.4     2       6
 # 2         15.2     2       6
 # 3         19.2     2       6
 # 4         21.0     2       6
 # 5         21.4     2       6
 # 6         22.8     2       6
 # 7         30.4     2       6
 # 8         13.3     1       3
 # 9         14.3     1       3
 #10         14.7     1       3
 # ... with 15 more rows
Run Code Online (Sandbox Code Playgroud)