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

R环境下如何筛选未达benchmark的供应商SLA得分数据行

数据结构评估

你当前的长表结构可以直接使用,但有两个优化点:

  • 现有score列为字符型,需要先转换为数值型才能正确做大小比较,避免字符排序逻辑(如"99">"100")导致的判断错误
  • 把benchmark数据和供应商得分放在同一张表,每次判断前都需要先提取基准值,如果你每月生成报告时SLA基准调整频率低,单独存储benchmark得分会更方便维护,修改基准时不需要触碰供应商得分数据,降低误改风险。如果SLA项固定很少变动,用向量存储即可;如果SLA项经常增删、基准分需要按月调整,建议单独维护一张基准表(比如存为csv文件),自动化报告时直接读取即可。
未达标供应商筛选代码

基于现有表结构的实现

library(tidyverse)

# 1. 转换得分列为数值型
df <- df %>% mutate(score = as.numeric(score))

# 2. 提取基准得分表
benchmark_ref <- df %>%
  filter(supplier_name == "benchmark") %>%
  select(sla, benchmark_score = score)

# 3. 筛选未达标条目
unqualified_list <- df %>%
  filter(supplier_name != "benchmark") %>%
  left_join(benchmark_ref, by = "sla") %>%
  filter(score < benchmark_score) %>%
  select(supplier_name, sla, score, benchmark_score)

运行后得到的unqualified_list就是所有未达标的供应商条目,同时自带基准分可以直接放到报告里做对比标注。

单独存储基准向量的实现

如果SLA项固定,用这种写法更简洁:

# 定义基准得分向量,键为SLA项名称,值为对应基准分
benchmark_vec <- c(sla1 = 100, sla2 = 95, sla3 = 100)

unqualified_list <- df %>%
  mutate(score = as.numeric(score)) %>%
  filter(supplier_name != "benchmark") %>%
  filter(score < benchmark_vec[sla]) %>%
  select(supplier_name, sla, score)
额外拓展

如果需要标注表现优秀的供应商,只要把筛选条件改成score >= benchmark_score即可,还可以新增列计算得分差值,用来在报告里做高亮标注,适配R Markdown的自动化输出需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 12:06:03