Flextable基本条件格式化

6
我有一个flextable,我正在尝试根据它们是否大于或小于特定的百分比来条件格式化百分数。这是一个简单的条件格式,所以我不确定为什么它不起作用。我感觉我错过了一些显而易见的东西。
这里是一个例子:

myft = structure(list(Name = c("Bob", "Fred", "Joe"), `2020-03-30` = c(96, 
                                                                       100, 36)), row.names = c(NA, -3L), class = c("tbl_df", "tbl", 
                                                                                                                    "data.frame"))
myft = flextable(myft)


myft = bg(myft, i = ~ Name  > 50,
            j = 2,
            bg="red")
myft

这段代码生成了这张图片:

输入图像描述

1个回答

17
您想根据“2020-03-30”列使用条件格式:

您想根据“2020-03-30”列使用条件格式:

library(flextable)
myft = structure(list(Name = c("Bob", "Fred", "Joe"), `2020-03-30` = c(96, 
                                                                       100, 36)), row.names = c(NA, -3L), class = c("tbl_df", "tbl", 
                                                                                                                    "data.frame"))
myft = flextable(myft)


myft = bg(myft, i = ~ `2020-03-30`  > 50, 
          j = 2,
          bg="red")
myft

编辑:

如果您希望在多个列中进行条件染色,可以创建一个颜色矩阵:

library(flextable)
myft = structure(list(Name = c("Bob", "Fred", "Joe"), 
                      `2020-03-30` = c(96, 100, 36),
                      `2020-04-30` = c(30, 100, 36)), 
                 row.names = c(NA, -3L), class = c("tbl_df", "tbl", "data.frame"))

colormatrix <- ifelse(myft[, -1] > 50, "red", "white")
myft %>% flextable() %>% bg(j = 2:3, bg=colormatrix)


知道这是一些显而易见的东西。现在,我尝试使用一个包含i和j中所有日期的向量将其应用于所有日期列。如果我有很多日期列,我该如何继续应用这个方法? - vb66
也许可以看一下 https://stackoverflow.com/questions/58677080/r-flextable-conditional-formatting-based-on-pairs-of-rows 如何创建一个颜色网格。 - user12728748
您上面的编辑工作非常出色!谢谢!这将非常有用,可以为我节省大量时间。 - vb66

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接