更改统计参数,使二分变量显示由斜杠 ( / ) 分隔的两种表现形式的数量

问题描述 投票:0回答:1

我需要准备一个临床特征表,不仅显示二分变量的一种表现的频率,而且在同一行上用 /(斜杠)分隔。

例如:

性别(女、男):10/8

但是,我做不到。我唯一能做的就是相对于观察总数的数字:

data("mtcars")
require(gt_summary)

tbl_summary(mtcars,
            statistic = list(
            all_continuous() ~ "{mean}±{sd}",
            all_dichotomous() ~ "{n}/{N}"
        )
            )

我也尝试过:

tbl_summary(mtcars,
            statistic = list(
            all_continuous() ~ "{mean}±{sd}",
            all_dichotomous() ~ "{n}/{N-n}"
        )
            )

但这行不通。

不幸的是,该杂志强制采用这种风格。

有什么想法吗?

r gtsummary
1个回答
0
投票

这需要一些解决方法来使用“stargazer”包来实现。请参阅下面的代码。

install.packages("tidyverse")
library(tidyverse)

data(mtcars)

a <- mtcars %>% 
select_if(~is.numeric(.)) %>% 
summarise(across(everything(), list(N = ~str_c(round(mean(.),2), " ± ", round(sd(.),2))))) %>% 
as.data.frame() %>% 
pivot_longer(
  cols = everything(),
  names_to = c("Characteristic", ".value"),
  names_sep = "_"
)

categorical_var <- mtcars %>% select_if(~!is.numeric(.)) %>% colnames(.) %>% as.vector()

install.packages("foreach")
library(foreach)

b <- foreach(i = categorical_var, .combine = 'rbind') %do% {
  temp <- mtcars %>% 
select(i) %>% 
group_by(get(i)) %>% 
count() %>% 
rename(Characteristic = `get(i)`, N = n)
  temp[[1]] <- str_c(i, " ( ", paste0(temp[[1]], collapse=", "), " )")
  temp[[2]] <- str_c(temp[[2]], collapse=" / ")
  temp
}

b <- b %>% distinct(.)

c <- rbind(a,b)

library(stargazer)
stargazer(c, type="html", summary=F)

运行类型设置为“html”的函数“stargazer”将在 R 控制台中打印出表格的 HTML 代码。您可以将生成的代码复制粘贴到文本编辑器(我更喜欢 Notepad++)中,将其另存为 HTML 文件类型,然后在您选择的 Web 浏览器(Edge、Chrome、Firefox 等)中打开它。

注意 - 所有单独的代码块也可以很好地打包到自定义函数中。请根据需要随意修改。

© www.soinside.com 2019 - 2024. All rights reserved.