2

我有一个类似于下面的表格:

library(tibble)
library(formattable)

mytable <- tibble(
id = c(NA, 748, 17, 717, 39, 734, 10, 762),
NPS = c(65, 63, 56, 62, 73, 80, 50, 54),
`NPS Chge vs. month ago` = c(-2, -5, -2, -8, -1, 6, 7, -9),
`Cumulative Response` = c(766, 102, 154, 81, 239, 79, 50, 61),
`Response Rate` = c(0.25, 0.24, 0.25, 0.34, 0.21, 0.34, 0.32, 0.27),
`Response for Month` = c(161, 43, 7, 37, 7, 32, 15, 20)
)

formattable(mytable)

在此处输入图像描述

我希望为行的背景设置条件格式,这样如果 NPS 分数低于 60,则背景设置为红色,否则设置为绿色。在我对 HTML 的有限了解中,我想我可以使用“td”。不幸的是,它似乎弄乱了整个表格的格式:

html_tag <- "td"
my_format <- formatter(html_tag, style = x ~ ifelse(mytable$NPS < 60, "background-color:red", "background-color:green"))

formattable(mytable, list(
  area(col = 2:6) ~ my_format
))

在此处输入图像描述

表的标题不再与其余行对齐。我究竟做错了什么?我应该用什么代替“td”?

4

1 回答 1

0

您还可以在不使用 HTML 的情况下有条件地更改背景颜色。没有额外美感的简单代码版本可能是这样的:

library(dplyr)
library(formattable)
tibble(
  id = c(NA, 748, 17, 717, 39, 734, 10, 762),
  NPS = c(65, 63, 56, 62, 73, 80, 50, 54),
  `NPS Chge vs. month ago` = c(-2, -5, -2, -8, -1, 6, 7, -9),
  `Cumulative Response` = c(766, 102, 154, 81, 239, 79, 50, 61),
  `Response Rate` = c(0.25, 0.24, 0.25, 0.34, 0.21, 0.34, 0.32, 0.27),
  `Response for Month` = c(161, 43, 7, 37, 7, 32, 15, 20)
) %>%
  formattable(align = rep("c", ncol(.)),
              list(
                `NPS` = formatter("span", style = ~ style (display = "block",
                                                           `background-color` = ifelse(NPS < 60, "red", "green"))) 
              )
  )

在此处输入图像描述

于 2022-01-22T07:01:25.687 回答