我正在尝试创建一个color_bar,其中的条基于行值的子集的百分比,即a1 =(a1 + b1)/ 2。但是,我也希望将数字格式化为百分比。
我曾尝试使用Google搜索,但是找不到其他遇到类似问题的人。我怀疑可能会有更好的方法来实现此目的,但更容易,但我无法弄清楚。
tempDf = data.frame(a=c(0.8,0.5), b=c(0.2,0.5),c=c(500,500)) # dummy data
formattable(tempDf,unlist(list(
lapply(as.list(1:nrow(tempDf)), function(row) {
list(
area(row, 1:2) ~ color_bar('green', function(row) row/sum(row)), # creates the green bars which are based on the percentage a1=(a1+b1)/2
area(row, 1:1) ~ function(x) percent(x, digits = 1) # formats the a row as percent *this overwrites the color bars*
)
})
)))
预期的输出是,绿色条在A列中以百分比显示。目前,百分比代码会覆盖条形图。
答案 0 :(得分:1)
我使用tidyverse
进行了此操作,但是它就像一个符咒。实际上有两个部分,具体取决于您的需求:
这是假设您已经有一个已在0到1之间编码的变量。我们称之为pct_var
。
tempDf %>%
mutate(pct_var = color_bar(colour_to_use)(formattable::percent(pct_var))
此解决方案来自DisplayR blog post,要求您编写一个非常简单的函数(在其他情况下可能不是一个非常有用的函数)。
perc_scale = function(x) (x/1)
tempDf %>%
mutate(pct_var = color_bar(colour_to_use, fun = perc_scale)(formattable::percent(pct_var))
有,希望对某人有用。