Я не могу найти способ стилизации ячеек на основе условия в другом столбце с tableHtml
, поэтому вот еще одна попытка с пакетом gt
.
Несколько предостерегающих замечаний:
gt
не включает код javascript bootstrap, как kableExtra
, но файл html по-прежнему содержит код CSS. - Я не понимаю вашего запрос с префиксом, поэтому я проигнорировал это.
- Я рассмотрел условия отдельно , а не вместе.
- Консолидация всех пропущенных значений в
NA
позволит gt
иметь дело со знаками процента et c. , а не включать их в виде текста (что усложняет задачу, особенно для проверки условий).
В целом , этот код должен быть легко модифицируемым для более точного соответствия вашим потребностям:
library(tibble)
library(gt)
library(stringr)
library(dplyr)
# data with the requested use cases :
Dataframe <-
tribble(
~seq, ~count1, ~percentage1, ~Marking, ~count2, ~Percentage2, ~batch_no, ~count3, ~Percentage3,
"FRD", 1, "12.50%", "S1", "2", "25.00%", "6", "1", "12.50%",
"FHL", 1, "12.50%", "S2", "1", "12.50%", "7", "2", "25.00%",
"ABC", 2, "25.00%", "S3", "1", "12.50%", "8", "2", "45.00%",
"ABC", 2, "25.00%", "S3", "1", "12.50%", "9", "2", "17.00%",
"DEF", 1, "12.50%", "Hold", "2", "45.00%", "9", "1", "12.50%",
"XYZ", 1, "12.50%", "NA", "1", "12.50%", "NA", "1", "12.50%",
"ZZZ", 1, "12.50%", "(Blank)", "1", "12.50%", "(Blank)", "1", "12.50%",
"FRD", 1, "12.50%", "-", "-", "-", "-", "-", "-",
"NA", 1, "12.50%", "-", "-", "-", "-", "-", "-",
"(Blank)", 0, "0.00%", "-", "-", "-", "-", "-", "-",
"Total", 8, "112.50%", "-", "8", "100.00%", "-", "8", "100.00%"
)
test1 <- expression(Marking == "Hold" & as.numeric(str_remove(Percentage2, "%")) > 25.00)
test2 <- expression(batch_no == "8" & as.numeric(str_remove(Percentage3, "%")) > 25.00)
test3 <- expression(Marking == "S3" & batch_no == "9")
newtab <-
Dataframe %>%
mutate(Marking = ifelse(eval(test3), paste0(Marking, " (In progress)"), Marking)) %>%
gt() %>%
#
tab_style(style = list(cell_fill(color = "lightgreen"),
cell_text(weight = "bold")),
locations = cells_column_labels(columns = 1:9)) %>%
#
tab_style(style = list(cell_fill(color = "yellow"),
cell_text(weight = "bold")),
locations = cells_body(columns = 1:9, rows = nrow(Dataframe)) %>%
#
tab_style(style = list(cell_fill(color = "red"),
cell_text(color = "white", weight = "bold")),
locations = cells_body(columns = c("Marking", "Percentage2"),
rows = eval(test1))) %>%
#
tab_style(style = list(cell_fill(color = "red"),
cell_text(color = "white", weight = "bold")),
locations = cells_body(columns = c("batch_no", "Percentage3"),
rows = eval(test2))) %>%
#
tab_style(style = list(cell_text(size = px(2))),
locations = cells_body(columns = c("Marking"),
rows = str_detect(string = Marking, pattern = "progress")))
gtsave(newtab, file = "gttable.html")