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
相关产品推荐
相关产品推荐

