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

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

我正在使用 gtsummary 包中的 tbl_summary 创建发布表,汇总数据表中的长分类数据列表。出于发布目的,tbl_summary 允许使用参数分配人类可读的变量标签而不是变量名称

label = grade ~ "Tumor Grade"

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

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

但是,我有数百个变量,并且变量名称和相应的人类可读标签一起存储在另一个表中。

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

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

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

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

label = list(VAR_NAME ~ "VAR_LABEL")

提前致谢。

r tidyverse plyr gtsummary
3个回答
2
投票

我认为最好的选择是将变量标签保存为命名列表。它们更容易使用,并且您可以将命名列表传递给 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 包于 2021 年 2 月 20 日创建(v1.0.0)


0
投票

您可以使用

Map
动态创建标签。如果您的数据框名为
df
,请尝试:

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

然后在

formula_list
中使用这个
label

label = formula_list

0
投票

已经有一段时间了,但以防万一有人正在寻找一种方法从 gtsummary 表的查找/密码本表中提取标签,下面是一个可重现的示例,受到上面响应的启发。

# create lookup table 
labels <- data.frame(
  variable_name = c("Sepal.Length", "Sepal.Width", "Petal.Length"),
  Label = c("Sepal.Length: this", "Sepal.Width: that", "Petal.Length: other")
)

# set labels 
formula_list <- lapply(seq_len(nrow(labels)), function(i) {
  as.formula(sprintf('%s ~ "%s"', labels$variable_name[i], labels$Label[i]))
})

# get label names 
lab_names <- unlist(lapply(formula_list, function(formula) {
  as.character(formula[[2]])  # Extract the second element from the formula
}))

# create table 
iris %>% 
  gtsummary::tbl_summary(
    include = lab_names, 
    label = formula_list
  )
© www.soinside.com 2019 - 2024. All rights reserved.