Janice Neumann
Janice Neumann

Reputation: 39

Rstudio gtsummary table with three categorical variables

I'm trying to figure out how to use the gtsummary package for my dataset.

I have three categorical values and two of those set as strata. I'm not interested in the frequency of each sample but want the numeric value in the table.

Currently I'm using this simple code (x, y, z, are my categorical values, whereas SOC is the numerical values. Y and Z should go in the headline (strata).

Data %>%
  select(x, y, z , SOC) %>%
  tbl_strata(strata=z,
             .tbl_fun =
               ~ .x %>%
               tbl_summary(by = y , missing = "no"),
              statistic = list(all_continuous()~ "{mean} ({sd})" ))%>%
  modify_caption("**Soil organic carbon [%]**")%>%
  bold_labels()

Edit

Let's take the trial dataset as an example:

trial %>%
  select(trt, grade, stage, age, marker) %>%
  tbl_strata(strata=stage,
             ~tbl_summary(.x, by = grade , missing = "no"),
             statistic = list(all_continuous()~ "{mean} ({sd})" 
))%>%
  bold_labels()

What I'm looking for is a table like this, but without the frequency showing of each treatment (Drug A, B). I only want the age and marker to show up in my table but organized by treatment. I'd like to have the first section showing only the age and marker for the group that received Drug A. Then a section showing the same for Drug B.

enter image description here

Edit 2

Your input is exactly what I am looking for. With the trial dataset it works perfectly fine. However, ones I put in my data, the numeric values are all in one column instead of in rows. I also still get the frequencies and I can't figure out why. I use exactly the same code and the same amount of variables and my table looks somewhat like this:

enter image description here

Upvotes: 2

Views: 1280

Answers (1)

Daniel D. Sjoberg
Daniel D. Sjoberg

Reputation: 11679

I think nesting calls to tbl_strata() (one merging and the other stacking) will get you what you're after. Example below!

library(gtsummary)
packageVersion("gtsummary")
#> [1] '1.5.2'

tbl <- 
  trial %>%
  select(trt, grade, stage, age, marker) %>%
  tbl_strata(
    strata = trt, 
    function(data) {
      data %>%
        tbl_strata(
          strata = stage,
          ~ tbl_summary(
            .x,
            by = grade,
            statistic = all_continuous() ~ "{mean} ({sd})",
            missing = "no"
          ) %>%
            modify_header(all_stat_cols() ~ "**{level}**")
        )
    },
    .combine_with = "tbl_stack",
    .combine_args = list(group_header = c("Drug A", "Drug B"))
  ) %>% 
  bold_labels()

enter image description here Created on 2022-03-04 by the reprex package (v2.0.1)

Upvotes: 0

Related Questions