gtsummary: суммирование непрерывных переменных по двум категориальным переменным

#r #gtsummary

#r #gtsummary

Вопрос:

Я пытаюсь суммировать непрерывную переменную по двум категориальным переменным, как показано ниже. Я не смог сделать это правильно. Интересно, есть ли способ получить это с gtsummary помощью пакета. Спасибо

 library("gtsummary")
library("tidyverse")
set.seed(123)
sex <- sample(c("Male", "Female"), size=100, replace=TRUE)
age <- rnorm(n=100, mean=20   4*(sex=="F"), sd=0.1)
height <- sample(c("Tall", "short"), size=100, replace=TRUE)
bmi <- rnorm(n=100, mean=10   4*(sex=="Female")   2*(height=="Tall"), sd=1)

dsn <- data.frame(sex, age, bmi, height)


tab <- dsn %>% 
  dplyr::select(age, sex) %>% 
  tbl_summary(by = sex) %>% 
  bold_labels() 
tab

 #Characteristic         Female, N = 43           Male, N = 57  
                   ────────────────────────────────────────────────────────────────
                     age              20.00 (19.93, 20.06)   19.99 (19.94, 20.03)  
                   ────────────────────────────────────────────────────────────────
                     Statistics presented: median (IQR)                            


tab1 <- dsn %>% 
  filter(height == "Tall") %>% 
  dplyr::select(bmi, sex) %>% 
  tbl_summary(by = sex,
              label = list(bmi ~ "....   Tall"))
tab1

 #Characteristic         Female, N = 22           Male, N = 35  
                   ────────────────────────────────────────────────────────────────
                     ....  Tall       15.54 (15.32, 16.38)   12.09 (11.53, 12.87)  
                   ────────────────────────────────────────────────────────────────
                     Statistics presented: median (IQR) 

tab2 <- dsn %>% 
  filter(height == "Tall") %>% 
  dplyr::select(bmi, sex) %>% 
  tbl_summary(by = sex,
              label = list(bmi ~ "....   Short"))
tab2

 #Characteristic         Female, N = 22           Male, N = 35  
                   ────────────────────────────────────────────────────────────────
                     ....  Short      15.54 (15.32, 16.38)   12.09 (11.53, 12.87)  
                   ────────────────────────────────────────────────────────────────
                     Statistics presented: median (IQR)  

# I am trying to obtain the table below
tbl_stack(
  list(tab1, tab2, tab),
  group_header = c("BMI", "", ""))

   #Group   Characteristic         Female, N = 22           Male, N = 35  
               ────────────────────────────────────────────────────────────────────────
                 BMI     ....  Tall       15.54 (15.32, 16.38)   12.09 (11.53, 12.87)  
                         ....  Short      15.54 (15.32, 16.38)   12.09 (11.53, 12.87)  
                         age              20.00 (19.93, 20.06)   19.99 (19.94, 20.03)  
               ────────────────────────────────────────────────────────────────────────
                 Statistics presented: median (IQR)  

#Is there an easy way to do this using the gtsummary package

  

Комментарии:

1. что бы я сделал, так это создал новую переменную, вставив height и sex вместе в одну переменную, а затем использовал эту переменную в операторе by

Ответ №1:

У нас нет такой функции конкретно в gtsummary. НО я написал одну и добавил ее в другой пакет, который я написал, под названием bstfun (только для GitHub). Это место, где начинаются некоторые функции gtsummary, и они могут быть перенесены в пакет позже.

В любом случае, вот как вы можете получить нужную вам таблицу.

 devtools::install_github("ddsjoberg/bstfun")
library(bstfun)

tbl <-
  trial %>%
  tbl_2way_summary(grade, trt, marker)
  

введите описание изображения здесь

Комментарии:

1. Большое спасибо, @Daniel D. Sjoberg. Это здорово. Знаете ли вы, возможно ли добавить подзаголовок выше Age: Grade I , например Age by grade .

2. Смотрите потенциальное решение здесь: community.rstudio.com/t /…

3. Спасибо. Подойдет