Форматирование подмножества кадра данных в процентах и ​​отображение в flexdashboard - PullRequest
0 голосов
/ 08 апреля 2020

В настоящее время я работаю на панели инструментов в R, используя flexdashboard. Я использую разные источники данных Excel / CSV для генерации html -выхода. Моя цель - отобразить (как часть информационной панели) таблицу данных Excel на странице информационной панели. Фрейм данных, импортированный из Excel-данных, выглядит (упрощенно) следующим образом:

 text_col <- c("A", "B", "C", "D")
 jan_col <- c(0.2, 0.3, 12, 0.4)
 feb_col <- c(0.1,0.2, 12.5, 0.8)
 dt <- data.frame("TEXT" = text_col, "JAN" = jan_col, "FEB" = feb_col)

Теперь я хочу иметь вывод в моей панели инструментов, где числа <1 отформатированы в процентах. Важно, чтобы числа> 1 (например, 12 и 12,5), а также текст (очевидно) не были отформатированы в процентах.

До сих пор я пытался выбрать подмножество и перезаписать это подмножество, используя функция процента в R. Это работает для фактического подмножества, но не обновляет исходную таблицу:

 library(dplyr)
 dt[c(1:2,4),c(2:3)] <- dt[c(1:2,4),c(2:3)] %>% mutate_each(list(percent))

Есть ли способ просто изменить ячейки, которые я хочу отформатировать в процентах?

Заранее благодарю за помощь!

1 Ответ

0 голосов
/ 08 апреля 2020

Вы можете использовать ifelse для проверки условий.

library(dplyr)
dt %>% mutate_at(-1, ~ifelse(. < 1, scales::percent(.), .))

Или, если вы просто хотите добавить символ '%' к числам

dt %>% mutate_at(-1, ~ifelse(. < 1, paste0(., '%'), .))

Вы также можете сделать это в базе R:

dt[-1] <- lapply(dt[-1], function(x) ifelse(x < 1, paste0(x, '%'), x))
...