带有计数和百分比的 expss mdset 表

Posted

技术标签:

【中文标题】带有计数和百分比的 expss mdset 表【英文标题】:expss mdset table with both counts and percentages 【发布时间】:2021-09-18 04:13:04 【问题描述】:

对于多重响应(多重二分法)集合,我想制作一个简单的表格,显示有效响应的计数和百分比。

checkall <- data.frame(ID=1:60, 
                     q1a=sample(c(0,1), size=60, replace=TRUE),
                     q1b=sample(c(0,1), size=60, replace=TRUE),
                     q1c=sample(c(0,1), size=60, replace=TRUE), 
                     q1d=sample(c(0,1), size=60, replace=TRUE),
                     q1e=sample(c(0,1), size=60, replace=TRUE),
                     q1f=sample(c(0,1), size=60, replace=TRUE),
                     q1g=sample(c(0,1), size=60, replace=TRUE),
                     q1h=sample(c(0,1), size=60, replace=TRUE))



calc_cro_cpct(checkall, mdset(q1a %to% q1h))

 |              | #Total |
 | ------------ | ------ |
 |          q1a |   53.3 |
 |          q1b |   48.3 |
 |          q1c |   43.3 |
 |          q1d |   43.3 |
 |          q1e |   41.7 |
 |          q1f |   55.0 |
 |          q1g |   63.3 |
 |          q1h |   48.3 |
 | #Total cases |   60.0 |

calc_cro_cases(checkall, mdset(q1a %to% q1h))

                         
 |              | #Total |
 | ------------ | ------ |
 |          q1a |     32 |
 |          q1b |     29 |
 |          q1c |     26 |
 |          q1d |     26 |
 |          q1e |     25 |
 |          q1f |     33 |
 |          q1g |     38 |
 |          q1h |     29 |
 | #Total cases |     60 |

有没有办法将它们并排放在同一张桌子上?

我设法使它与tidyverse 一起工作(没有总案例行)。

library(tidyverse)
checkall %>% 
     select(q1a:q1h) %>% 
     summarize_all(sum, na.rm=TRUE) %>% 
     pivot_longer(everything(), names_to="Choice", values_to = "count") %>% 
     mutate(percent=round(count/nrow(checkall), 3))

# A tibble: 8 x 3
  Choice count percent
  <chr>  <dbl>   <dbl>
1 q1a       32   0.533
2 q1b       29   0.483
3 q1c       26   0.433
4 q1d       26   0.433
5 q1e       25   0.417
6 q1f       33   0.55 
7 q1g       38   0.633
8 q1h       29   0.483

但我想看看expss 是否可以做到这一点,因为如果计算有效百分比的便利性(即总案例反映了在mdset 中至少有一个选择的观察数量。

【问题讨论】:

【参考方案1】:

我在查看 non mdset 表的示例时发现了这一点:

  checkall %>% tab_cells(mdset(q1a %to% q1h)) %>%
    #tab_cols(q11) %>%
    tab_stat_cases(label = "freq") %>%
    tab_stat_cpct(label = "col %") %>%
    tab_pivot(stat_position = "inside_columns")

 |              | #Total |       |
 |              |   freq | col % |
 | ------------ | ------ | ----- |
 |          q1a |     32 |  53.3 |
 |          q1b |     29 |  48.3 |
 |          q1c |     26 |  43.3 |
 |          q1d |     26 |  43.3 |
 |          q1e |     25 |  41.7 |
 |          q1f |     33 |  55.0 |
 |          q1g |     38 |  63.3 |
 |          q1h |     29 |  48.3 |
 | #Total cases |     60 |  60.0 |

【讨论】:

以上是关于带有计数和百分比的 expss mdset 表的主要内容,如果未能解决你的问题,请参考以下文章

如何在循环内正确解析expss中的(?)mdset?

expss 表中的百分比不准确

如何创建具有 1 个自变量和 3 个因变量的计数和百分比表和折线图

每天按列和行、计数和百分比分组

如何使用 SQL 获取计数和百分比?

如何使用计数窗口函数获取百分比?