Eu tenho um quadro de dados simulado em R que eu quero formatar condicionalmente o fundo das células (ou seja, se o valor for menor que 30 para ser vermelho, se estiver entre 31 e 75 para ser azul e 76 e acima para verde). Eu tentei adicionar bordas externas na tabela, mas como você pode ver na foto, há espaços vazios com o cabeçalho no canto superior direito e a borda vertical esquerda não funciona.
o pedaço de configuração é:
{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
options(knitr.table.format = "latex")
e a seção YAML:
output:
pdf_document:
latex_engine: xelatex
Dados
library(tibble)
library(kableExtra)
set.seed(123) # For reproducibility
YEARS = c(1990, 2000, 2010, 2020)
# Generate columns
Year <- rep(YEARS, each = 48)
Category <- rep(sapply(1:16, function(x) paste0(sample(letters, 10, replace = TRUE), collapse = "")), each = 3)
Category <- rep(Category, times = 4)
Favor <- rep(c("Good", "Mediocre", "Bad"), each = 1,times =64)
Percentage <- sample(50:99, 192, replace = TRUE)
# Create tibble
df <- tibble(Year, Category, Favor, Percentage)
df = df%>%
arrange(
Category,
factor(Favor, levels = c("Bad", "Mediocre", "Good")),
Year
) %>%
pivot_wider(
names_from = c(Favor, Year),
values_from = Percentage,
names_sep = "-"
)
header_values = c("Category", rep(c(
paste(YEARS[1]), paste(YEARS[2]), paste(YEARS[3]), paste(YEARS[4])
), 3))
colnames(df)=header_values
df %>%
kableExtra::kbl(align = "lcccccccccccccc") %>%
kableExtra::column_spec(1, border_left = TRUE) %>%
kableExtra::column_spec(ncol(df), border_right = TRUE) %>%
kableExtra::add_header_above(header = c(" " = 1,
"Good" = 4,
"Mediocre" = 4,
"Bad" = 4)) %>%
kableExtra::column_spec(1, width = "6cm")
Você pode resolver a coloração condicional usando esta ótima resposta e as bordas esquerda e direita usando
?add_header_above
-> há argumentos para border_left e border_right.Observe que os códigos de cores de fundo não são os mesmos do R!. Então
green
pode funcionar, masgreen4
não! Não me cite sobre isso, mas acho que essas cores estão boas. Você pode definir suas próprias cores em um cabeçalho LaTeX yaml\definecolor{orange}{HTML}{ff7f00}
ou\usepackage[dvipsnames]{xcolor}
para mais nomes de cores, conforme descrito aqui . Como adicionar cabeçalho rmarkdown latexdando
Código
ADICIONAR
Se eu aumentar a coluna esquerda para 6 cm, o limite externo não desaparece, mas a tabela é cortada