将group_by和count()应用到变量后计算总计的百分比
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将group_by和count()应用到变量后计算总计的百分比相关的知识,希望对你有一定的参考价值。
我正在尝试计算分组变量的总计百分比。我有一个带有吸烟变量的数据框
> df$smoking
[1] NA "Previous" "Never" "Current" "Never"
[6] "Never" "Never" "Never" "Current" "Current"
[11] "Previous" "Never" "Never" "Previous" "Never"
[16] "Previous" "Previous" "Never" "Never" "Never"
[21] "Never" "Never" "Never" "Never" "Previous"
我想按类别分组,对类别进行计数,然后计算总计的百分比。我可以得到很好的计数,并以此方式排除NA:
> df %>% + group_by(smoking) %>% + filter(!is.na(smoking)) %>% + count() # A tibble: 3 x 2 # Groups: smoking [3] smoking n <chr> <int> 1 Current 93 2 Never 380 3 Previous 213 >
但是我无法获得每个百分比。我看过其他多种解决方案,但是它们似乎没有用。例如,我见过的最常见的结果是:
> df %>% + group_by(smoking) %>% + filter(!is.na(smoking)) %>% + count() %>% + mutate(percent = 100 * n / sum(n)) # A tibble: 3 x 3 # Groups: smoking [3] smoking n percent <chr> <int> <dbl> 1 Current 93 100 2 Never 380 100 3 Previous 213 100 >
似乎“ sum(n)”没有交叉组。如何通过组而不是组内计算总和?谢谢你的帮助!!
我正在尝试计算分组变量的总计百分比。我有一个包含吸烟变量的数据框> df $吸烟[1]不适用“上一个”,“从不”,“当前”,“从不” [6]“从不” ...
答案
> df[!is.na(smoking),] %>% count (smoking) %>% mutate (percent=n/sum(n)*100)
以上是关于将group_by和count()应用到变量后计算总计的百分比的主要内容,如果未能解决你的问题,请参考以下文章
R语言dplyr包使用group_by函数和summarise函数计算单分类变量分组均值ggplot2可视化线图(line plot)并设置线条类型为虚线(set line types)
R语言dplyr包使用group_by函数和summarise函数计算单分类变量分组均值ggplot2可视化线图(line plot)并设置线条类型为虚线(set line types)