[英]R kable/kableExtra, conditional formatting by percentage (with missing values)
我正在使用 kable 和 kableExtra 並希望顯示一個包含百分比列的表格(格式為“95%”)。 我還想根據百分比值(使用多個 colors 和切點)對單元格背景進行條件格式化。 此外,還混入了一些 NA。
我已經嘗試了這篇文章中的一些方法,但不喜歡不給整個單元格着色的 cell_spec 背景着色,所以更喜歡在 kable 中使用 column_spec。 然而,我發現顯示百分比的所有選項都將百分比轉換為字符變量,這限制了我進行條件格式化的能力。
當我簡化示例代碼以在此處發布時(經過幾個小時的錯誤),我終於使用 startWith 讓它工作了(在這種情況下這是一個不錯的解決方案,因為我的切點分別為 80% 和 90%,但對於所有情況)。
df <- tibble(
x=c(1:6),
percents =c (1, .95, .82, .77, .62, NA)
)
df$percents <- percent(df$percents, accuracy = 1)
kable(df, booktabs=TRUE, escape=FALSE ) %>%
kable_styling() %>%
column_spec(2, background = if_else(startsWith(df$percents, '100'), "Darkgrey",
if_else(startsWith(df$percents, '9'), "Darkgrey",
if_else(startsWith(df$percents, '8'), "silver", "lightgray",
"white"), "white"), "white"))
我很好奇是否有人對此有另一種解決方案,可以保留將百分比值作為數字而不是字符使用的能力。
謝謝你!
為標簽創建一個單獨的列,並使用case_when
與數字進行比較。
library(knitr)
library(kableExtra)
df <- tibble::tibble(
x=c(1:6),
percents =c (1, .95, .82, .77, .62, NA)
)
df$percent_label <- scales::percent(df$percents, accuracy = 1)
kable(df[-2], booktabs=TRUE, escape=FALSE ) %>%
kable_styling() %>%
column_spec(2, background = case_when(df$percents > 0.9 ~ 'darkgrey',
df$percents > 0.8 ~ 'silver',
is.na(df$percents) ~ 'white',
TRUE ~ 'lightgray'))
我們可以使用formattable::percent
來保持type
不變
df$percents = formattable::percent(df$percents, digits = 0)
kable(df, booktabs=TRUE, escape=FALSE ) %>%
kable_styling() %>%
column_spec(2, background = case_when(df$percents > 0.9 ~ 'darkgrey',
df$percents > 0.8 ~ 'silver',
is.na(df$percents) ~ 'white',
TRUE ~ 'lightgray'))
df <- tibble::tibble(
x=c(1:6),
percents =c (1, .95, .82, .77, .62, NA)
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.