You need to enable JavaScript to run this app. R语言中如何基于分组数据计算各置信度字段的组间百分比变化
优惠活动
大模型
产品
解决方案
定价
更多

R语言中如何基于分组数据计算各置信度字段的组间百分比变化

分组置信度准确率的组间百分比变化计算方案

原代码的问题定位

  • 你之前写的percent函数核心逻辑是对同一分组行内的相邻数值列做差分计算,和「同一置信度列下、不同分组行之间对比」的需求完全错位。加上用apply(table2[-1], 1, percent)按行遍历的逻辑,本质是给每个分组单独算置信度类别的相邻变化率,既没有固定每一组跨分组对比的基准值,也没法覆盖3个分组之间的全部两两配对场景。
  • 需求要求覆盖的固定对比组合共3组,需要对所有置信度字段逐字段计算:
    • 以First_LV为基准,计算JW的数值变化占比
    • 以First_LV为基准,计算LV的数值变化占比
    • 以JW为基准,计算LV的数值变化占比

实现逻辑与可运行代码

统一的百分比变化计算规则为:(对比组数值 - 基准组数值)/ 基准组数值 * 100,计算结果以新增行的形式追加到原始tibble底部,不改动原有原始准确率数据行。

# 加载tidyverse生态依赖
library(tidyverse)

# 1. 预处理原始表,提取可按行索引的分组数值矩阵
group_matrix <- table2 %>%
  as.data.frame() %>%
  filter(!str_starts(Group, "#")) %>% # 过滤掉tibble打印时的元注释行
  column_to_rownames("Group") %>%
  mutate(across(everything(), as.numeric))

# 2. 封装通用百分比变化计算函数
get_pct_change <- function(base_group, cmp_group) {
  base_vals <- group_matrix[base_group, ]
  cmp_vals <- group_matrix[cmp_group, ]
  100 * (cmp_vals - base_vals) / base_vals
}

# 3. 生成3组对比的结果行
pct_jw_vs_firstlv <- tibble(
  Group = "JW相对First_LV变化率(%)",
  as_tibble_row(get_pct_change("First_LV", "JW"))
)
pct_lv_vs_firstlv <- tibble(
  Group = "LV相对First_LV变化率(%)",
  as_tibble_row(get_pct_change("First_LV", "LV"))
)
pct_lv_vs_jw <- tibble(
  Group = "LV相对JW变化率(%)",
  as_tibble_row(get_pct_change("JW", "LV"))
)

# 4. 合并原始表与新增的变化率行,生成最终结果
final_table <- bind_rows(
  table2 %>% filter(!str_starts(Group, "#")),
  pct_jw_vs_firstlv,
  pct_lv_vs_firstlv,
  pct_lv_vs_jw
)

补充说明

计算过程中如果某一置信度字段的基准组数值为0,会出现无穷大的计算值,可以根据业务判断直接将这类结果替换为NA即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.05 04:24:03