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)
任何人的修复将不胜感激.
我刚刚修改了你的代码,如下所示.你只需要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)
| 归档时间: |
|
| 查看次数: |
3563 次 |
| 最近记录: |