【问题标题】:find percentages in categorical data在分类数据中查找百分比
【发布时间】:2021-03-08 04:38:14
【问题描述】:

我想计算分类数据的百分比。

我有以下数据集。

library(tidyverse)

tib <- tibble(a = c("yes", "yes", "yes", "yes"),
              b = c("yes", "yes", "no", "yes"),
              c = c("AB", "yes", "AC", "no"),
              d = c("AC", "yes", "no", "AB"),
)             space = c("UP", "DO", "UP", "TA")

我想找出按空格分组的每个 a、b、c、d 列的百分比。

因此,例如,如果我们想查看“a”:

df_perc <- as.data.frame(prop.table(table(tib$space, tib$a)) * 100)

给出:

  Var1 Var2 Freq
1   DO  yes   25
2   TA  yes   25
3   UP  yes   50

这是对的。

现在,为了不对每一列都这样做,我正在尝试使用收集:

df_tidy <- tib %>%
    gather(key="let", value="response", -"space")
   

但我必须以某种方式按“空格”分组。

然后做这样的事情:

df_perc <- as.data.frame(prop.table(table(df_tidy$let, df_tidy$response)) * 100)

【问题讨论】:

    标签: r dplyr


    【解决方案1】:

    这个怎么样:

    tib %>% pivot_longer(-space, names_to = "vars", values_to="vals") %>% 
      group_by(space, vars, vals) %>% count() %>%
      ungroup %>% 
      group_by(vars) %>% 
      mutate(pct = (n/sum(n))*100) %>% 
      select(-n) %>% 
      pivot_wider(names_from="vars", values_from="pct", values_fill=0) 
    # # A tibble: 8 x 6
    #   space vals      a     b     c     d
    #   <chr> <chr> <dbl> <dbl> <dbl> <dbl>
    # 1 DO    yes      25    25    25    25
    # 2 TA    yes      25    25     0     0
    # 3 TA    no        0     0    25     0
    # 4 TA    AB        0     0     0    25
    # 5 UP    yes      50    25     0     0
    # 6 UP    no        0    25     0    25
    # 7 UP    AB        0     0    25     0
    # 8 UP    AC        0     0    25    25
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-22
      • 1970-01-01
      • 2013-08-25
      • 1970-01-01
      • 2022-11-16
      • 1970-01-01
      • 2020-04-15
      • 2020-09-15
      相关资源
      最近更新 更多