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

如何在R的table1包中重新调整因子水平的显示顺序?

解决table1包强制按字母排序因子水平的问题

核心原因是table1()函数默认会忽略你设置的因子水平顺序,强制按字母排序,只要在调用函数时加上factor.order = TRUE参数,就能保留你自定义的因子顺序。具体步骤如下:

  1. 先按需求设置因子水平顺序
    用factor()或forcats包的函数(比如fct_relevel())把变量转为因子,并指定你想要的显示顺序:

    library(tidyverse)
    library(table1)
    
    # 示例数据
    df <- tibble(
      income = sample(c("Less than 20k", "10k-20k", "20k-30k", "30k+"), 100, replace = TRUE)
    )
    
    # 自定义收入分类的因子顺序
    df <- df %>%
      mutate(income = factor(income, levels = c("Less than 20k", "10k-20k", "20k-30k", "30k+")))
    
  2. 调用table1时开启factor.order参数
    在table1()中设置factor.order = TRUE,让函数尊重你预先设置的因子水平顺序:

    table1(~ income, data = df, factor.order = TRUE)
    

多变量批量设置的情况

如果有多个有序变量需要自定义顺序,只需逐个设置因子水平,然后统一在table1()中添加factor.order = TRUE即可:

df <- df %>%
  mutate(
    education = factor(education, levels = c("High school", "Bachelor", "Master", "PhD")),
    age_group = factor(age_group, levels = c("18-24", "25-34", "35-44", "45+"))
  )

table1(~ income + education + age_group, data = df, factor.order = TRUE)

补充说明

之前你用tidyverse重排因子后无效,是因为table1默认参数factor.order = FALSE,会强制对所有因子水平按字母重新排序。开启这个参数后,函数就会严格遵循你定义的因子顺序输出表格。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 05:52:09