You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在gtsummary中按指定列频率排序表格行(不修改因子水平)

不用修改因子水平的实现方案

直接借助gtsummary的modify_table_body()函数就能实现需求,无需改动value列的因子水平,具体操作如下:

  • 先构造数据并生成初始摘要表格(原代码里的group_by(group)属于冗余操作,tbl_summary(by = group)会自动完成分组统计):
library(tibble)
library(gtsummary)

df <- tibble(
  group = c("a", "a", "b", "b", "b"),
  value = c("h", "h", "h", "b", "h")
)

initial_tbl <- df %>% tbl_summary(by = group)
  • 调整表格行顺序,按group a的value频率降序排列:
final_tbl <- initial_tbl %>%
  modify_table_body(
    ~ .x %>%
      # 提取group a对应列中的频率数值(默认第一个分组列名为stat_1)
      mutate(freq_a = as.numeric(stringr::str_extract(stat_1, "\\d+"))) %>%
      # 按频率降序排序,确保value=h排在首位
      arrange(desc(freq_a)) %>%
      # 移除临时生成的频率列
      select(-freq_a)
  )
  • 如果不确定group a对应的列名,可查看表格的底层数据确认:
# 打印表格的table_body部分,查看分组对应的列名
initial_tbl$table_body

找到group a对应的统计列(格式通常为stat_*),替换上述代码中的stat_1即可。

内容的提问来源于stack exchange,提问作者Ai4l2s

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 22:27:32