目前,我正在使用柔性仪表板在R中开发仪表板。我使用不同的Excel-/CSV数据源来生成html输出。我的目标是在仪表板的页面中显示Excel数据表(作为仪表板的一部分)。从Excel-data导入的数据看起来(简化)如下:
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))
有没有办法让我想用百分比格式化的细胞发生突变?
我感谢你提前提供帮助!
发布于 2020-04-08 01:21:24
您可以使用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))
https://stackoverflow.com/questions/61096993
复制