Условное форматирование с `kable`, но со знаками"% " - PullRequest
0 голосов
/ 13 марта 2019

Мне нравятся пакеты kable и kableExtra для условного форматирования таблиц и их использования в отчетах.Однако я вижу, что нет способа условно отформатировать таблицы, если вы также хотите включить в них знак «%».Есть ли способ обойти эту проблему?

Ответы [ 3 ]

1 голос
/ 13 марта 2019

@ heck1 был отличный ответ, я не знал об этом пакете.В будущем было бы полезно, если бы вы включили образцы данных, то, что вы пробовали, и желаемый результат.Исходя из вашего комментария, я думаю, что вы ищете что-то вроде этого (ниже).Конечно, вы можете изменить имена столбцов и внести другие изменения, которые вы считаете нужными.

---
title: "test"
output: word_document
---

  ```{r setup, include=FALSE}
library(tidyverse)
library(knitr)
library(kableExtra)

df <- diamonds

tabl1 <- df %>% 
  group_by(cut) %>% 
  summarise(n = n()) %>%
  mutate(perc = round(n / sum(n), 3)*100,
         cut = cell_spec(cut, color = ifelse(perc < 10, "red", "black")),
         perc = paste0(perc, "%"))

```

```{r  , message= FALSE, echo=FALSE,warning=FALSE}

kable(tabl1, escape = F) %>%
  kable_styling(full_width = F)
1 голос
/ 13 марта 2019

Вы можете использовать scales::percent() при создании таблицы следующим образом:

    ---
title: "test"
output: word_document
---

```{r setup, include=FALSE}
library(tidyverse)
library(knitr)
library(scales)

df <- diamonds

tabl1 <- df %>% group_by(  cut)    %>% summarise(n = n())
names(tabl1) <- c("Count of Cut", "n")
tabl1$perc <- scales::percent(tabl1$n / sum(tabl1$n))

```


```{r  , message= FALSE, echo=FALSE,warning=FALSE}

kable(tabl1)
```

Результат:

Leads to this output

0 голосов
/ 21 июля 2019

Не знаю, если вы все еще застряли на этом, но я столкнулся с этим вопросом, когда имел дело с той же проблемой, и решил опубликовать мой обходной путь.Ключ должен передать функции цветовой палитры (в данном случае spec_color) числовую версию значений, при этом используя значения символов с символом «%» в качестве входных данных для cell_spec, чтобы «%» был включен в тег, которыйcell_spec возвращает

---
title: "R Notebook"
output:
  html_document: default
  pdf_document: default
---

```{r setup, include = F}
library(tidyverse)
library(knitr)
library(kableExtra)
options(knitr.table.format = "html")
```

```{r}
df = tibble(
  x = c(1, 2, 3, 4, 5),
  percents = c("12.7%", "14.0%", "19.2%", "20.4%", "13.2%")
)

```

```{r}
df = df %>%
  mutate(percents = cell_spec(percents, format = "html", 
                              #I first remove the "%" character, 
                              #then coerce the column to a numerical value so that
                              #the color palette function can handle it
          color = spec_color(as.numeric(str_sub(percents, end = -2L))))
         ) 

df %>% kable(format = "html", escape = F) %>% kable_styling()
```
...