如何解决R中可反应的自定义JS聚合函数从分组数据中获得两个总和而不是一个总和
我正在使用 R 中的 reactable
包构建表格。行有 2 种渐变配色方案中的 1 种,具体取决于它们属于哪个组(在我的示例年份中)。这工作正常。但是,现在我想使用另一个变量向表中添加一个嵌套结构(它变得太大了)。想想国家内部的区域。但是,我无法清楚地总结国家层面的汇总结果。如果我使用 sum
我会得到总和,而我想保持一个地区和国家内年份的原始分解。因此,我不想聚合一个值,而是想聚合到两个值。理想情况下,我还想在组的标题中保留颜色渐变方案(Y1 为蓝色,Y2 为红色)。如何在自定义 JS()
函数中编写它?还是有其他方法可以做到这一点?
library(reactable)
library(tidyverse)
my_df <- data.frame(region = rep(1:4,each =2),country = rep(c("country_1","country_2"),each = 4),year= rep(c("Y1","Y2"),2),var1 = c(3,1,3,4,2,4),var2 = c(2,5,var3 = c(1,5))
make_color_pal <- function(colors,bias = 1) {
get_color <- colorRamp(colors,bias = bias)
function(x) rgb(get_color(x),maxColorValue = 255)
}
f_pct_color_1 <- make_color_pal(c("#ffffff","#E01F54"),bias = 1)
f_pct_color_2 <- make_color_pal(c("#ffffff","#001852"),bias = 1)
reactable(
my_df,groupBy = "country",defaultColDef = colDef(
aggregate = "sum",class = "cell",style = function(value,index,name) {
if (my_df[index,"year"] == 'Y1') {
list(background = f_pct_color_1(
value / my_df %>%
filter(year == "Y1") %>%
ungroup() %>%
select(-region,-country,-year ) %>%
max()
))
} else{
list(background = f_pct_color_2(
value / my_df %>%
filter(year == "Y2") %>%
ungroup() %>%
select(-region,-year ) %>%
max()
))
}
}
),columns = list(
region = colDef(style = list(),aggregate = "count"),country = colDef(style = list(),year = colDef(style = list(),aggregate = "count")
)
)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。