R:条件格式化具有百分比(%)值的列
R: Conditional formatting a column with percentage(%) value
我需要对 1 个特定列进行颜色条件格式化,将其格式化为百分比,并将文件导出为 .xlsx。请注意,我有 5 个数据框,我将 运行 使用此规则代码,并将它们编译成 1 个工作簿,每个工作簿在不同的工作表中。如果我在其中设置百分比格式,我就被困在我似乎无法设置条件规则的部分。反之亦然,如果我首先对其进行条件格式化,我不确定如何为该列设置百分比格式。请参考我下面的代码。
## Dataframe
cost_table <- read.table(text = "FRUIT COST SUPPLY_RATE
1 APPLE 15 0.026377
2 ORANGE 14 0.01122
3 KIWI 13 0.004122
5 BANANA 11 0.017452
6 AVOCADO 10 0.008324 " , header = TRUE)
## This is the line where I label the %. However if I do that, conditional formatting will not recognize it in the rule
cost_table$SUPPLY_RATE <- label_percent(accuracy = 0.01)(cost_table$SUPPLY_RATE)
## Creating workbook and sheet
Fruits_Table <- createWorkbook()
addWorksheet(Fruits_Table,"List 1")
writeData(Fruits_Table,"List 1",cost_table)
## Style color for conditional formatting
posStyle <- createStyle(fontColour = "#006100", bgFill = "#C6EFCE")
negStyle <- createStyle(fontColour = "#9C0006", bgFill = "#FFC7CE")
## If Supply rate is above 1.5%, it will be green, if it's equivalent or below, it will be red
conditionalFormatting(Fruits_Table, "List 1",
cols = 3,
rows = 2:6, rule = "C2> 0.015", style = posStyle
)
conditionalFormatting(Fruits_Table, "List 1",
cols = 3,
rows = 2:6, rule = "C2<= 0.015", style = negStyle
)
输出应该如下所示。
关于边界信息
我正在查看的是为 c2:c6 应用外边框。
为了阐明我的目的,最终输出将如下所示。我有一些其他代码来格式化 headers 和列 A:B 的边框。因为百分比风格,影响了我的界线。
您不需要使用 scales
包中的 label_percent
。
您可以使用 style
和 addStyle
函数将百分比格式与颜色规则一起应用到工作簿。另一件事,我在 conditionalFormatting
的文档示例中发现,如果您的规则仅适用于一个,则无需在 rule
参数中指定列名(例如 C
)与另一列中的值无关的列。
这是我使用的代码:
Fruits_Table <- createWorkbook()
addWorksheet(Fruits_Table,"List 1")
writeData(Fruits_Table,"List 1",cost_table)
conditionalFormatting(Fruits_Table, "List 1",
cols = 3,
rows = 2:6, rule = "> 0.015", style = posStyle)
conditionalFormatting(Fruits_Table, "List 1",
cols = 3,
rows = 2:6, rule = "<= 0.015",
style = negStyle)
percent_style <- createStyle(numFmt = "PERCENTAGE")
addStyle(Fruits_Table,"List 1", style = ,percent_style, rows = 2:6, cols = 3)
我试过那个代码,它有效。
saveWorkbook(Fruits_Table, "my_fruits_table.xlsx", )
已更新以添加边界信息
如果您想创建边界线和百分比格式,您可以使用 border
和 borderStyle
,如下所示:
percent_border_style<- createStyle(numFmt = "PERCENTAGE",
border = "TopBottomLeftRight",
borderStyle = "medium" )
addStyle(Fruits_Table,"List 1",
style = ,percent_border_style,
rows = 2:6, cols = 3)
saveWorkbook(Fruits_Table, "borderline_fruits_table.xlsx", )
这是临界结果
如果您想为不同的单元格自定义不同的样式,正如您在评论中解释的那样,您需要 createStyle
特定样式,然后使用 addStyle
应用该特定样式特定单元格的样式。因此,您需要为每种样式指定行和列。要保持百分比格式样式,您还需要将 numFmt
保留为每个 addStyle
.
这是将外边框应用于目标列的示例代码。该代码为三组单元格自定义边框:
top_side_line <- createStyle(numFmt = "PERCENTAGE",
border = "TopLeftRight",
borderStyle = "medium")
side_line <- createStyle(numFmt = "PERCENTAGE",
border = "LeftRight",
borderStyle = "medium")
bottom_side_line <- createStyle(numFmt = "PERCENTAGE",
border = "BottomLeftRight",
borderStyle = "medium")
addStyle(Fruits_Table,"List 1",
style = top_side_line, rows = 2, cols = 3)
addStyle(Fruits_Table,"List 1",
style = side_line, rows = 3:5, cols = 3)
addStyle(Fruits_Table,"List 1",
style = bottom_side_line, rows = 6, cols = 3)
saveWorkbook(Fruits_Table, "newline_fruits_table.xlsx")
结果如下:
我需要对 1 个特定列进行颜色条件格式化,将其格式化为百分比,并将文件导出为 .xlsx。请注意,我有 5 个数据框,我将 运行 使用此规则代码,并将它们编译成 1 个工作簿,每个工作簿在不同的工作表中。如果我在其中设置百分比格式,我就被困在我似乎无法设置条件规则的部分。反之亦然,如果我首先对其进行条件格式化,我不确定如何为该列设置百分比格式。请参考我下面的代码。
## Dataframe
cost_table <- read.table(text = "FRUIT COST SUPPLY_RATE
1 APPLE 15 0.026377
2 ORANGE 14 0.01122
3 KIWI 13 0.004122
5 BANANA 11 0.017452
6 AVOCADO 10 0.008324 " , header = TRUE)
## This is the line where I label the %. However if I do that, conditional formatting will not recognize it in the rule
cost_table$SUPPLY_RATE <- label_percent(accuracy = 0.01)(cost_table$SUPPLY_RATE)
## Creating workbook and sheet
Fruits_Table <- createWorkbook()
addWorksheet(Fruits_Table,"List 1")
writeData(Fruits_Table,"List 1",cost_table)
## Style color for conditional formatting
posStyle <- createStyle(fontColour = "#006100", bgFill = "#C6EFCE")
negStyle <- createStyle(fontColour = "#9C0006", bgFill = "#FFC7CE")
## If Supply rate is above 1.5%, it will be green, if it's equivalent or below, it will be red
conditionalFormatting(Fruits_Table, "List 1",
cols = 3,
rows = 2:6, rule = "C2> 0.015", style = posStyle
)
conditionalFormatting(Fruits_Table, "List 1",
cols = 3,
rows = 2:6, rule = "C2<= 0.015", style = negStyle
)
输出应该如下所示。
关于边界信息
我正在查看的是为 c2:c6 应用外边框。
为了阐明我的目的,最终输出将如下所示。我有一些其他代码来格式化 headers 和列 A:B 的边框。因为百分比风格,影响了我的界线。
您不需要使用 scales
包中的 label_percent
。
您可以使用 style
和 addStyle
函数将百分比格式与颜色规则一起应用到工作簿。另一件事,我在 conditionalFormatting
的文档示例中发现,如果您的规则仅适用于一个,则无需在 rule
参数中指定列名(例如 C
)与另一列中的值无关的列。
这是我使用的代码:
Fruits_Table <- createWorkbook()
addWorksheet(Fruits_Table,"List 1")
writeData(Fruits_Table,"List 1",cost_table)
conditionalFormatting(Fruits_Table, "List 1",
cols = 3,
rows = 2:6, rule = "> 0.015", style = posStyle)
conditionalFormatting(Fruits_Table, "List 1",
cols = 3,
rows = 2:6, rule = "<= 0.015",
style = negStyle)
percent_style <- createStyle(numFmt = "PERCENTAGE")
addStyle(Fruits_Table,"List 1", style = ,percent_style, rows = 2:6, cols = 3)
我试过那个代码,它有效。
saveWorkbook(Fruits_Table, "my_fruits_table.xlsx", )
已更新以添加边界信息
如果您想创建边界线和百分比格式,您可以使用 border
和 borderStyle
,如下所示:
percent_border_style<- createStyle(numFmt = "PERCENTAGE",
border = "TopBottomLeftRight",
borderStyle = "medium" )
addStyle(Fruits_Table,"List 1",
style = ,percent_border_style,
rows = 2:6, cols = 3)
saveWorkbook(Fruits_Table, "borderline_fruits_table.xlsx", )
这是临界结果
如果您想为不同的单元格自定义不同的样式,正如您在评论中解释的那样,您需要 createStyle
特定样式,然后使用 addStyle
应用该特定样式特定单元格的样式。因此,您需要为每种样式指定行和列。要保持百分比格式样式,您还需要将 numFmt
保留为每个 addStyle
.
这是将外边框应用于目标列的示例代码。该代码为三组单元格自定义边框:
top_side_line <- createStyle(numFmt = "PERCENTAGE",
border = "TopLeftRight",
borderStyle = "medium")
side_line <- createStyle(numFmt = "PERCENTAGE",
border = "LeftRight",
borderStyle = "medium")
bottom_side_line <- createStyle(numFmt = "PERCENTAGE",
border = "BottomLeftRight",
borderStyle = "medium")
addStyle(Fruits_Table,"List 1",
style = top_side_line, rows = 2, cols = 3)
addStyle(Fruits_Table,"List 1",
style = side_line, rows = 3:5, cols = 3)
addStyle(Fruits_Table,"List 1",
style = bottom_side_line, rows = 6, cols = 3)
saveWorkbook(Fruits_Table, "newline_fruits_table.xlsx")
结果如下: