You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

月度流量数据按指定百分比生成表格的实现方法

生成月度流量超越概率对应值表格的R实现

核心思路

针对已完成月度分组的流量数据集,提取指定超越概率对应的各月流量值,转换为宽表格式后用gt包美化输出,匹配需求中的表格样式。

步骤与代码实现

1. 加载依赖包

使用dplyr处理数据,gt制作格式化表格:

library(dplyr)
library(gt)

2. 预处理数据

取消原有分组,避免后续操作受分组限制:

dat_ungrouped <- dat %>% ungroup()

3. 定义目标超越概率

按需设置需要提取的超越概率值,示例采用需求中的0.02、0.05、0.08:

target_exceedance <- c(0.02, 0.05, 0.08)

4. 提取各月对应超越概率的流量值

按月份分组,匹配每个目标超越概率对应的流量值(此处采用匹配最接近的超越概率记录,若需精确插值可替换逻辑):

exceedance_table <- dat_ungrouped %>%
  group_by(month) %>%
  summarise(
    across(all_of(target_exceedance), ~{
      # 匹配最接近目标超越概率的流量值
      closest_idx <- which.min(abs(exceedance.wm - .x))
      discharge.cfs[closest_idx]
    })
  ) %>%
  # 转换为宽表:超越概率为行,月份为列
  tidyr::pivot_longer(-month, names_to = "exceedance", values_to = "discharge") %>%
  tidyr::pivot_wider(names_from = month, values_from = discharge) %>%
  # 将超越概率转为百分比格式
  mutate(exceedance = paste0(as.numeric(exceedance)*100, "%")) %>%
  rename(Percentage = exceedance)

5. 用gt包美化表格

调整列名、格式,生成符合需求的表格:

exceedance_table %>%
  gt() %>%
  tab_header(title = "月度流量超越概率对应值") %>%
  # 将月份数字转为英文缩写
  cols_label(
    `1` = "Jan",
    `2` = "Feb",
    `3` = "Mar",
    `4` = "Apr",
    `10` = "Oct",
    `11` = "Nov",
    `12` = "Dec"
  ) %>%
  # 格式化流量值为整数
  fmt_number(columns = -Percentage, decimals = 0)

扩展说明

  • 若需更精确的流量值,可将匹配逻辑替换为线性插值:
approx(exceedance.wm, discharge.cfs, xout = .x)$y
  • 直接修改target_exceedance中的数值,即可适配任意超越概率的需求。

内容的提问来源于stack exchange,提问作者FungalRicky

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 19:35:53