Use scientific notation in p-value produced by gtsummary table

Viewed 141

I am trying to display the p-value of a test produced in a gtsummary table in scientific format. So I want my p-value's to look like 2e-16 instead of <0.001. See table below.

Any suggestions how I can do this using the gtsummary package? I have put together a reproducible code below:

# download pacman package if not installed, otherwise load it
if(!require(pacman)) install.packages(pacman)

# loads relevant packages using the pacman package
pacman::p_load(
  tidyverse, # for pipes
  gtsummary) # for tables

# 2by2 table 
trial %>%
  tbl_cross(row = trt, 
            col = response) %>% 
  add_p()

enter image description here

1 Answers

Here's how you can get the p-value you're looking for!

library(gtsummary)
packageVersion("gtsummary")
#> [1] '1.4.1'

# 2by2 table 
tbl <-
  trial %>%
  tbl_cross(row = trt, 
            col = response) %>% 
  add_p() %>%
  modify_fmt_fun(p.value ~ function(x) ifelse(is.na(x), NA, format(x, digits = 2, scientific = TRUE)))

enter image description here Created on 2021-06-11 by the reprex package (v2.0.0)

The add_p() function has argument pvalue_fun= that should specify the function that formats/styles. But I see that the argument is being ignored (I'll fix this in the next version).

Related