如何实现R语言gtsummary包tbl_summary输出结果的转置
你可以通过将原始数据集转换为长格式,结合gtsummary的tbl_strata()函数实现所需的行列互换效果,完整可运行代码如下:
library(tidyverse) library(gtsummary) set.seed(42) # 注意原始样例数据生成时需加replace=T,否则200行数据仅前4行x/y/z有有效值 dat <- data.frame( x = sample(1:4, 200, replace = TRUE), y = sample(1:4, 200, replace = TRUE), z = sample(1:4, 200, replace = TRUE), time = runif(200, min = 2, max = 25) ) # 转换为长格式,统一处理三类分组 dat_long <- dat %>% pivot_longer( cols = c(x, y, z), names_to = "group_type", values_to = "group_level", names_transform = list( group_type = ~case_match( .x, "x" ~ "Follow-up time (Group 1)", "y" ~ "Follow-up time (Group 2)", "z" ~ "Follow-up time (Group 3)" ) ) ) # 分层生成统计结果后自动按列合并 result_tbl <- dat_long %>% tbl_strata( strata = group_type, .tbl_fun = ~.x %>% tbl_summary( by = group_level, include = time, statistic = list(all_continuous() ~ "{median} ({p25}, {p75})") ) %>% modify_header(all_stat_cols() ~ "**{level}**") %>% modify_footnote(all_stat_cols() ~ NA) ) %>% # 移除冗余的行标签前缀 modify_body_row_label(~str_remove(.x, "time")) # 查看最终结果 result_tbl
运行代码后输出的表格行对应分组层级1~4,列对应三个分组的随访时间中位数(四分位距)统计值,和预期效果一致。
内容的提问来源于stack exchange,提问作者Sandro
相关产品推荐
相关产品推荐

