使用一行中的多个变量来透视表

Posted

技术标签:

【中文标题】使用一行中的多个变量来透视表【英文标题】:Pivoting the table with multiple variables in a row 【发布时间】:2021-09-21 12:47:12 【问题描述】:

我正在使用 R 中的 expss 包来创建表。抱歉,我无法理解文档。

这是我的示例数据:

dput(df)
structure(list(cohort_tracing_complete = structure(c(0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 
0, 0, 0, 0, 2, 2, 0, 2, 2, 2, 2, 0, 2, 2, 2, 2), label = "Form Complete", class = c("labelled", 
"numeric"), labels = c(Incomplete = 0, Unverified = 1, Complete = 2
)), crf_1_eligibility_consent_recruitment_complete = structure(c(2, 
2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), label = "Form Complete", class = c("labelled", 
"numeric"), labels = c(Incomplete = 0, Unverified = 1, Complete = 2
))), row.names = c(NA, -40L), class = c("tbl_df", "tbl", "data.frame"
))

df %>% 
  tab_cells(
    cohort_tracing_complete,
    crf_1_eligibility_consent_recruitment_complete) %>%
  tab_cols(total()) %>%
  tab_stat_cases(
    total_label = NULL,
    total_statistic = "u_cases",
    total_row_position = "below",
  ) %>%
  tab_pivot() %>%
  tab_transpose

我试图让我的数据看起来像这样

所需格式

我尝试使用上面的代码转换我的表格,现在它看起来像这样

所有数字都在一行中。

如何调整我的代码以便能够获得所需的格式?

【问题讨论】:

您是否致力于使用expss 【参考方案1】:

我知道这是使用dplyrtidyr 而不是expss 实现的。

我快速浏览了expss,所有示例似乎都是关于至少两个变量之间的汇总数据子集,而不是两个变量的汇总数据。

library(tidyr)
library(dplyr)

  df %>% 
  pivot_longer(everything()) %>% 
  group_by(name, value) %>% 
  summarise(count = n()) %>%
  pivot_wider(names_from = value, values_from = count)%>% 
  rowwise() %>% 
  mutate(Total = sum(c(Incomplete, Unverified, Complete), na.rm = TRUE))

# A tibble: 2 x 5

  name                                           Incomplete Unverified Complete Total
  <chr>                                               <int>      <int>    <int> <int>
1 cohort_tracing_complete                                28          1       11    40
2 crf_1_eligibility_consent_recruitment_complete         25         NA       15    40

【讨论】:

实际上,我认为有一些奇怪的行为。您的代码现在可以完美运行,没有错误。谢谢。

以上是关于使用一行中的多个变量来透视表的主要内容,如果未能解决你的问题,请参考以下文章

选择数据透视表中的 ID,包括多个数据透视 ID,不包括一个数据透视 ID

如何删除透视表中的很多汇总行

为啥数据透视表无法刷新数据

excel中数据透视表,如何将空白的地方隐藏掉

数据透视表求和项为啥在第一行

透视具有多个值的表