如何在R中列出不同分类变量的计数和百分比

iqxoj9l9  于 2023-05-20  发布在  其他
关注(0)|答案(1)|浏览(288)

我使用下面的代码来获取分类变量的不同水平的比例的计数和百分比。

table(df$var1)

table(df$var1)%>%
prop.table()

问题是,我的数据集中有50多个分类变量,手动为每个变量做这件事太耗时了。我还得把它记在我的报告里我想知道是否有可能在代码中包含不同的变量,然后输出是一个包含多个分类变量的表,其中包含计数和百分比。就像这个问题中所附的图片一样。Output table

9gm1akwq

9gm1akwq1#

下面是一个使用dplyr的例子。您可以使用select()来选择分类变量,可以通过名称,列号或其中一个整洁的选择函数(例如,matches()starts_with()ends_with()contains())来完成。其余的只是计数并将它们变成比例。在代码中,您需要更改的只是输入 Dataframe 和select()调用中的变量。

library(dplyr)
library(tidyr)
data(diamonds, package="ggplot2")
diamonds %>% 
  select(cut:clarity) %>%
  mutate(across(everything(), as.character)) %>% 
  pivot_longer(everything(), values_to="category", names_to="variable") %>% 
  group_by(variable, category) %>% 
  tally() %>%
  group_by(variable) %>% 
  mutate(prop = n/sum(n))
#> # A tibble: 20 × 4
#> # Groups:   variable [3]
#>    variable category      n   prop
#>    <chr>    <chr>     <int>  <dbl>
#>  1 clarity  I1          741 0.0137
#>  2 clarity  IF         1790 0.0332
#>  3 clarity  SI1       13065 0.242 
#>  4 clarity  SI2        9194 0.170 
#>  5 clarity  VS1        8171 0.151 
#>  6 clarity  VS2       12258 0.227 
#>  7 clarity  VVS1       3655 0.0678
#>  8 clarity  VVS2       5066 0.0939
#>  9 color    D          6775 0.126 
#> 10 color    E          9797 0.182 
#> 11 color    F          9542 0.177 
#> 12 color    G         11292 0.209 
#> 13 color    H          8304 0.154 
#> 14 color    I          5422 0.101 
#> 15 color    J          2808 0.0521
#> 16 cut      Fair       1610 0.0298
#> 17 cut      Good       4906 0.0910
#> 18 cut      Ideal     21551 0.400 
#> 19 cut      Premium   13791 0.256 
#> 20 cut      Very Good 12082 0.224

创建于2023-05-16带有reprex v2.0.2

相关问题