TableOne与gtsummary处理极小值显示为0的问题求助
解决TableOne/gtsummary极小值显示为0的问题
针对TableOne的解决方案
方法1:调整打印时的小数位数
直接在print()中指定digits参数,设置足够多的小数位数来展示极小值:
library(tableone) data(iris) iris$rands <- 1e-9 * runif(n = nrow(iris)) tab <- CreateTableOne(data = iris) # 设置10位小数,确保极小值能被显示 print(tab, digits = 10)
方法2:强制使用科学计数法
如果小数位数太多不美观,可启用科学计数法格式:
print(tab, scientific = TRUE)
针对gtsummary的解决方案
方法1:指定变量的小数位数
用modify_fmt_fun()为目标变量设置足够的小数位数:
library(gtsummary) data(iris) iris$rands <- 1e-9 * runif(n = nrow(iris)) tbl_summary(iris) |> # 为rands变量设置10位小数 modify_fmt_fun(vars(rands), ~style_number(., digits = 10))
方法2:用科学计数法格式化
如果更倾向于科学计数法展示,使用style_scientific()函数:
tbl_summary(iris) |> modify_fmt_fun(vars(rands), ~style_scientific(., digits = 2))
原理说明
TableOne和gtsummary默认的数值格式化规则会对极小值进行四舍五入(默认保留2位小数),导致极小值被显示为0。通过调整格式化参数(小数位数或科学计数法),就能强制展示变量的实际数值。
内容的提问来源于stack exchange,提问作者G_biof
相关产品推荐
相关产品推荐

