如何用gtsummary将汽车品牌从列转为行生成统计表格
问题
我需要生成类似学术论文格式的统计表格,但当前用gtsummary包生成的表格将汽车品牌(mark)放在列上,希望改为以行的形式呈现。现有代码如下:
list("style_number-arg:big.mark" = "") %>% set_gtsummary_theme() df_selected <- df %>% select(mark, price, year, mileage, vol_engine, fuel) gts_stat1 <- tbl_summary( data = df_selected, by = mark, statistic = list( all_continuous() ~ "{mean} ({sd})", all_categorical() ~ "{n} ({p}%)"), label = list(price ~ "Price", year ~ "Build Year", mileage ~ "Mileage", vol_engine ~ "Volume Engine", fuel ~ "Fuel"), digits = list(year ~ c(0, 1)), missing = "no" ) %>% add_overall() %>% modify_spanning_header( all_stat_cols() ~ "**Car Marks**" ) %>% modify_footnote(all_stat_cols() ~ "Mean and Standard Deviation are presented in parentheses. The variable 'Fuel' is separated into different fuel types, and the proportion per fuel type is shown for each mark") %>% bold_labels() %>% italicize_levels() %>% as_gt() %>% gt::tab_header(title = gt::md("**Summary Statistics**")) %>% #gt::gtsave(filename = "summary_statistics.ltx") print(gts_stat1)
修改方案
直接使用gtsummary内置的transpose()函数即可完成行列转置,将品牌从列转为行。修改后的完整代码如下:
list("style_number-arg:big.mark" = "") %>% set_gtsummary_theme() df_selected <- df %>% select(mark, price, year, mileage, vol_engine, fuel) gts_stat1 <- tbl_summary( data = df_selected, by = mark, statistic = list( all_continuous() ~ "{mean} ({sd})", all_categorical() ~ "{n} ({p}%)"), label = list(price ~ "Price", year ~ "Build Year", mileage ~ "Mileage", vol_engine ~ "Volume Engine", fuel ~ "Fuel"), digits = list(year ~ c(0, 1)), missing = "no" ) %>% add_overall() %>% # 核心改动:转置表格,互换行列 transpose() %>% modify_spanning_header( all_stat_cols() ~ "**Summary Statistics**" ) %>% modify_footnote(all_stat_cols() ~ "连续变量以均值(标准差)呈现;燃油类型按不同类别展示各品牌下的频数占比") %>% bold_labels() %>% italicize_levels() %>% as_gt() %>% gt::tab_header(title = gt::md("**Summary Statistics**")) %>% # gt::gtsave(filename = "summary_statistics.ltx") print(gts_stat1)
关键说明
transpose()函数会直接将原表格的行(特征变量)和列(品牌)互换,完美实现需求- 同步调整了表头注释和脚注的中文表述,更符合使用习惯
- 其他格式设置(加粗标签、斜体层级等)保持原有逻辑不变
内容的提问来源于stack exchange,提问作者0klahoma
相关产品推荐
相关产品推荐

