3

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,378
  • 4
  • 18

3 Answers3

4

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
  • 9,180
  • 2
  • 16
  • 34
  • 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
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
  • 874,273
  • 37
  • 540
  • 662
  • okay thanks a lot, although I have to bold the estimate value based on tstat – SiH Oct 30 '21 at 22:26
  • @SiD that is easier, just change it to `estimate` based on the comparision on tstat'. updated – akrun Oct 30 '21 at 22:28
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
  • 21,159
  • 2
  • 9
  • 26