5

我正在尝试创建一个 color_bar,其中的条基于行值子集的百分比,即 a1=(a1+b1)/2。但是,我也希望将数字格式化为百分比。

我试过谷歌搜索,但找不到其他人有类似的问题。我怀疑可能有更好的方法可以更容易地做到这一点,但我无法弄清楚。

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 列中可见并且以百分比表示。目前,百分比代码会覆盖条形。

4

1 回答 1

2

我使用 . 来做到这一点tidyverse,但它就像一个魅力。它实际上有两个部分,具体取决于您的需要:

百分比格式

这是假设您有一个已经在 0 和 1 之间编码的变量。让我们称之为pct_var

tempDf %>%
    mutate(pct_var = color_bar(colour_to_use)(formattable::percent(pct_var))

在 0 和 1 之间缩放条形图

该解决方案来自DisplayR 博客文章,需要您编写一个非常简单的函数(在其他情况下可能不是很有用)。

perc_scale = function(x) (x/1)

tempDf %>%
    mutate(pct_var = color_bar(colour_to_use, fun = perc_scale)(formattable::percent(pct_var))

你有它,希望它对某人有用。

于 2020-05-07T22:05:44.380 回答