我在 R 中使用 tableone 包创建了很多大型表。我只是被要求提供 Excel 格式的表格以及单独列中的计数和百分比(或平均值/标准差等)。有没有一种简单的方法可以从 tableone 对象中提取这些信息?将 tableone 输出保存为数据框,我可以使用 dplyr 进行操作。
现有表格格式的示例代码:
library(dplyr)
library(tableone)
library(htmlTable)
starwars_data <- starwars %>%
mutate(species_cat = ifelse(species == 'Human', 'Human', 'Nonhuman'))
starwars_tbl <- CreateTableOne(vars = c('height', 'mass', 'hair_color', 'eye_color'), strata = 'species_cat', data = starwars_data)
starwars_tbl_print <- print(starwars_tbl, showAllLevels = TRUE, smd = TRUE, printToggle = FALSE)
htmlTable(starwars_tbl_print[, c(1:3,6)])
所需的输出是一个结构如下图所示的数据框。必须截屏,因为它一直将我的表格标记为格式不正确的代码,有人知道为什么吗?
按层划分的原始数据矩阵可在
trialone
对象中找到。例如,starwars_tbl$ContTable$Human
。
要将
starwars_tbl$ContTable
中的所有数据放入数据框中,我们可以:
starwars_tbl$ContTable %>%
map(\(x) as_tibble(x, rownames = "var")) %>%
bind_rows(.id = "strata")
CatTable
中的原始数据位于每个层的矩阵列表中。要将其放入数据框中,我们可以:
starwars_tbl$CatTable %>%
map(\(x) bind_rows(x, .id = "var")) %>%
bind_rows(.id = "strata")
P 值和标准化平均差 (SMD) 可以在连续表和分类表的属性中找到。例如,
attributes(starwars_tbl$ContTable)$pValues
和 attributes(starwars_tbl$ContTable)$smd
。