【问题标题】:How to obtain freqs & percentages for all categorical vars in df如何获取df中所有分类变量的频率和百分比
【发布时间】:2021-11-18 23:18:03
【问题描述】:

我的 df,Chap3,有大约 50 个分类变量。我想为每个包含百分比的分类变量生成一个频率表。下面的代码适用于单个 var bsex,但我无法弄清楚如何对所有分类变量重复它​​。曾尝试使用 apply 的变体,使用 select_if(is.factor) 等,但无济于事。

    Chap3 %>% 
        count(bsex) %>% 
        mutate(percent = round(n / sum(n) * 100,1))

【问题讨论】:

    标签: r percentage frequency-analysis


    【解决方案1】:

    我们可以使用来自base Rtable/proportions

    proportions(table(stack(type.convert(Chap3[-1], as.is = TRUE))), 2)
          ind
    values bsex csex
         0  0.4  0.5
         1  0.6  0.5
    

    数据

    Chap3 <- structure(list(id = 1:10, bsex = structure(c(2L, 2L, 2L, 1L, 
    2L, 1L, 1L, 1L, 2L, 2L), .Label = c("0", "1"), class = "factor"), 
        csex = structure(c(1L, 1L, 1L, 2L, 1L, 2L, 1L, 2L, 2L, 2L
        ), .Label = c("0", "1"), class = "factor")), class = "data.frame", row.names = c(NA, 
    -10L))
    

    【讨论】:

    • @Zan 如果答案有帮助,请随时单击左侧的复选标记接受答案。每个帖子只能接受一个答案。参考 - stackoverflow.com/help/someone-answers
    【解决方案2】:

    对于这种情况,最好获取长格式的分类数据。

    library(dplyr)
    library(tidyr)
    
    Chap3 %>%
      pivot_longer(cols = where(is.factor)) %>%
      count(name, value) %>%
      group_by(name) %>%
      mutate(n = round(prop.table(n), 1)) %>%
      ungroup
    
    #   name  value   n
    #  <chr> <fct> <dbl>
    #1 bsex      0   0.4
    #2 bsex      1   0.6
    #3 csex      0   0.5
    #4 csex      1   0.5
    

    数据

    如果您在reproducible format 中提供数据会更容易提供帮助

    set.seed(123)
    Chap3 <- data.frame(id = 1:10, 
                        bsex = factor(sample(c(1, 0), 10, replace = TRUE)), 
                        csex = factor(sample(c(1, 0), 10, replace = TRUE)))
    

    【讨论】:

    • 对于尝试相同操作的人,我必须添加一些调整以产生精确的频率和百分比。代码如下(对不起我的新手格式错误):Chap3 %>% pivot_longer(cols = where(is.factor)) %>% count(name, value) %>% group_by(name) %>% mutate(百分比 = round(prop.table(n) *100, 1)) %>% 取消分组
    猜你喜欢
    • 1970-01-01
    • 2011-04-17
    • 1970-01-01
    • 2021-11-04
    • 2020-10-17
    • 1970-01-01
    • 2022-11-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多