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

gtsummary中整数变量未被识别为连续变量的解决方法咨询

问题描述

尝试使用gtsummary包的tbl_summary()函数生成汇总表,数据集包含整数类型变量age,期望在输出中展示其mean(均值)和SD(标准差)。但该整数变量未被识别为连续变量,已尝试通过mutate(as.numeric(age))转换类型,但未解决问题,恳请提供建议。

原始代码:

df <- data.frame (age  = c(5.0, 5.2, 6.0, 7.1, 8.0, 9.0, 10.5, 4.1, 2.3),
                  sex = c("male", "female", "female", "female", "female", "male", "male", "female", "male"))

table1 <- df %>%
  select(age, sex) %>%
  tbl_summary(statistic = list(
    all_continuous() ~ "{mean} ({sd})",
    all_categorical() ~ "{n} ({p}%)"),
    label = list(age ~ "Age", 
                 sex    ~ "Sex")) %>%
  bold_labels()

table1
解决方案
  • 核心原因:gtsummary会根据变量的唯一值数量、存储类型自动判断变量类别,即使是数值型变量,如果取值范围窄、唯一值少,也会被默认归类为分类变量。直接手动指定变量类型即可解决问题。
  • 修改后的代码:在tbl_summary()中添加type参数,强制将age指定为连续变量
df <- data.frame (age  = c(5.0, 5.2, 6.0, 7.1, 8.0, 9.0, 10.5, 4.1, 2.3),
                  sex = c("male", "female", "female", "female", "female", "male", "male", "female", "male"))

table1 <- df %>%
  select(age, sex) %>%
  tbl_summary(
    # 强制指定age为连续变量,覆盖自动判断逻辑
    type = list(age ~ "continuous"),
    statistic = list(
      all_continuous() ~ "{mean} ({sd})",
      all_categorical() ~ "{n} ({p}%)"),
    label = list(age ~ "Age", 
                 sex    ~ "Sex")) %>%
  bold_labels()

table1
  • 说明:type参数可以直接覆盖gtsummary的自动变量分类逻辑,list(age ~ "continuous")明确告诉函数将age按连续变量处理,后续就会按照你定义的{mean} ({sd})格式输出统计量。如果你的实际数据中age是整数类型,无需额外用as.numeric()转换,直接指定类型即可生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 03:09:25