2

Is it possible to bold/color estimate values based on tstat.

For ex - bold estimate values if tstat is more than 1.96

This is in continuation of my previous question and I have to use flextable.

library(dplyr)
library(flextable)


attribute <- c("b0", "b1", "b2", "b3", "b4", "b5")
estimate <- round(runif(n = 6, min = 0, max = 5), 2)
tstat <- round(runif(n = 6, min = 0, max = 5), 2)

# tibble
tbl <- tibble(attribute, estimate, tstat) %>%
  as_flextable()

SiH
  • 1,030
  • 2
  • 11

3 Answers3

2

We could use either ifelse or case_when to add the **<value>** for bolding

library(dplyr)
library(flextable)
tbl <- tibble( attribute, estimate, tstat) %>%
       mutate(estimate = case_when(tstat > 1.96 
            ~sprintf('**%0.2f**', estimate), 
          TRUE  ~sprintf('%0.2f', estimate))) %>%
  as_flextable() %>%
  colformat_md()
tbl

-output

enter image description here

akrun
  • 789,025
  • 32
  • 460
  • 575
2

Another solution:

library(dplyr)
library(flextable)

set.seed(4123)

attribute <- c("b0", "b1", "b2", "b3", "b4", "b5")
estimate <- round(runif(n = 6, min = 0, max = 5), 2)
tstat <- round(runif(n = 6, min = 0, max = 5), 2)

tbl <- tibble(attribute, estimate, tstat)
  
tbl %>%   
  flextable() %>% 
  bold(tbl$tstat > 1.96,2)

enter image description here

PaulS
  • 10,636
  • 1
  • 7
  • 20
2

Another solution using flextable row selector:

library(dplyr)
library(flextable)

set.seed(4123)

attribute <- c("b0", "b1", "b2", "b3", "b4", "b5")
estimate <- round(runif(n = 6, min = 0, max = 5), 2)
tstat <- round(runif(n = 6, min = 0, max = 5), 2)

tbl <- tibble(attribute, estimate, tstat)

tbl %>%   
  flextable() %>% 
  bold(~ tstat > 1.96,2)

enter image description here

David Gohel
  • 7,348
  • 2
  • 14
  • 30
  • tbl %>% flextable() %>% __flextable__::bold(~ tstat > 1.96,2) - that was essential in my case to specify exactly which library it is from as crayon and gt libraries were also active within the same R session and all of then had function bold() – AnnaZ Mar 18 '22 at 14:30