gpt4 book ai didi

r - 如何根据单元格的值有条件地格式化 [gt] 表中的单元格

转载 作者:行者123 更新时间:2023-12-04 12:57:48 24 4
gpt4 key购买 nike

gt包让用户轻松格式化单元格 based on conditional statements关于行。我正在寻找一种根据单元格中的值格式化每个单元格的方法。
这就是我的意思。在下表中,我想用 S&P 值按其包含的值为每个单元格着色。

library(gt)
library(dplyr)
library(tidyr)

# some arbitrary values of the S&P 500
jan08 <- sp500 %>%
filter(between(date, as.Date("2008-01-01"), as.Date("2008-01-15"))) %>%
select(date, open, high, low, close)

gt(jan08)
basic gt table
此函数将每个值的适当颜色名称作为字符串返回。
## this is the range of values
sp500.range <- jan08 %>% pivot_longer(cols = c(open, high, low, close))
heat_palette <- leaflet::colorNumeric(palette = "YlOrRd",
domain = sp500.range$value)

# For example:
> heat_palette(1411.88)
[1] "#FEB852"
每个单元格都可以手动着色,但这显然不切实际。
gt(jan08) %>%
tab_style(style = cell_fill(color = heat_palette(1411.88)),
locations = cells_body(columns = "open",
rows = (open == 1411.88)))
gt with filled cell
有没有办法使用 tab_style函数根据单元格的值有条件地填充单元格?

最佳答案

创建 gt首先对象,然后循环遍历 for 中的行序列循环着色为 color参数在 cell_fill取值 length 1

library(gt)
gtobj <- gt(jan08)
ht_values <- heat_palette(jan08$open)
for(i in seq_along(jan08$open)) {
gtobj <- gtobj %>%
tab_style(style = cell_fill(color = ht_values[i]),
locations = cells_body(columns = "open", rows = i))
}



gtobj
-输出
enter image description here
编辑:
for然后可以将循环放置在这样的函数中。
fill_column <- function(gtobj, column){
ht_values <- heat_palette(jan08 %>% pull(sym(column)))
for(i in seq_along(jan08 %>% pull(sym(column)))){
gtobj <- gtobj %>%
tab_style(style = cell_fill(color = ht_values[i]),
locations = cells_body(columns = column, rows = i))
}
gtobj
}
然后,此功能可以包含在管道中。
gt(jan08) %>%
fill_column("open") %>%
fill_column("high") %>%
fill_column("low") %>%
fill_column("close")
gt table with all columns filled

关于r - 如何根据单元格的值有条件地格式化 [gt] 表中的单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63944953/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com