在 {gtsummary} 中删除小数点前的 0

Removing 0 before decimal in {gtsummary}

在心理学领域,习惯上当数值不可能超过1.0时,在小数点前去掉一个0。

因此,我想更改 p 值,例如:

p = 0.01 to p = .01

此外,在使用 tbl_regression 进行回归 table 时, 我想将标准化的 beta 系数更改为,例如:

beta = -0.43 to beta = -.43 (in the regression table)

或者,R^2:

R^2 = 0.234 to R^2 = .234 (through add_glance_statistics)

有办法吗?我看过样式工具,但似乎没有针对此的配置。

您可以使用modify_fmt_fun修改table的格式。在这里,我使用 gtsummary 中的 trial 数据来展示如何删除 p.value 的前导 0。在应用 sub 删除前导 0 后,它 returns NA 用于其他行。因此,我使用 gsub 将 table 的 NA 改回空白。

library(gtsummary)
library(tidyverse)

trial[c("age", "grade", "trt")] %>%
  tbl_summary(by = trt) %>%
  add_p() %>%
  modify_fmt_fun(update = p.value ~ function(val) {
    as.character(sub("^(-?)0.", "\1.", sprintf("%.2f", val))) %>%
      gsub("NA", "", .)
  })

输出

如果你需要对其他人做同样的事情,那么你可以添加额外的参数。在这里,我将 beta(即估计值)添加到 modify_fmt_fun.

lm(age ~ marker + grade, trial) %>%
  tbl_regression() %>%
  add_glance_source_note(
    label = list(df  ~ "Degrees of Freedom", sigma ~ "\U03C3"),
    fmt_fun = df ~ style_number,
    include = c(r.squared, AIC, sigma, df)
  ) %>%
  modify_fmt_fun(update = c(estimate, p.value) ~ function(val) {
    as.character(sub("^(-?)0.", "\1.", sprintf("%.2f", val))) %>%
      gsub("NA", "", .)
  })

输出