有没有办法从 tbl_summary 中的单独 table 中提取标签?

Is there a way to pull labels from a separate table in tbl_summary?

我正在使用 gtsummary 包中的 tbl_summary 来创建出版物 tables,总结来自数据 table 的一长串分类数据。出于发布目的,tbl_summary 允许使用参数

分配人类可读的变量标签而不是变量名称
label = grade ~ "Tumor Grade"

对于列表形式的多个变量:

label = list(api00 ~ "API in 2000",
             api99 ~ "API in 1999",
             api98 ~ "API in 1998")

然而,我有数百个变量,变量名和相应的人类可读标签存储在另一个 table 中。

我如何从一个单独的 table 中使用这些值创建上述格式的列表(即 var_name ~“变量标签”)并将其传递到 tbl_summary 标签中作为参数?

换句话说,我有一个 table 的格式:

VAR_NAME   VAR_LABEL
var1       First variable
var2       Second variable
...        ...
var159     Hundred fifty ninth variable

有没有办法读取这个 table 并将参数作为列表传递给 tbl_summary 的标签函数:

label = list(VAR_NAME ~ "VAR_LABEL")

提前致谢。

您可以使用 Map 动态创建标签。如果您的数据框称为 df,请尝试:

formula_list <- Map(function(x, y) as.formula(sprintf('%s~"%s"', x, y)), 
                    df$VAR_NAME, df$VAR_LABEL)

然后在label中使用这个formula_list

label = formula_list

我认为最好的办法是将变量标签保存为命名列表。它们更容易使用,您可以将命名列表传递给 gtsummary 中的任何标签参数。

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

list_of_labels <-
  list(age = "Patient Age, yrs",
       grade = "Path. Tumor Grade")

tbl <-
  trial %>%
  select(age, grade) %>%
  tbl_summary(label = list_of_labels)

# convert a data frame into a list
data.frame(variable = c("age", "grade"),
           label = c("Patient Age, yrs", "Path. Tumor Grade")) %>%
  tibble::deframe() %>%
  as.list()
#> $age
#> [1] "Patient Age, yrs"
#> 
#> $grade
#> [1] "Path. Tumor Grade"

reprex package (v1.0.0)

于 2021-02-20 创建