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

R语言dplyr分组后按数值区间条件新增列的实现方法

R语言实现分组新增准确率等级列的方法

你写的伪代码逻辑框架正确,只需要把伪语法替换为R原生合法判断逻辑即可,基于dplyr的可运行实现如下:

  • 核心逻辑用abs(pred_val - actual_val) <= 阈值直接计算预测值和真实值的偏差绝对值,替代伪代码里的isin区间判断
  • 利用case_when顺序判断的特性,先匹配最严格的good等级区间,再匹配次严格的medium区间,剩余未匹配的行统一赋值为poor,不需要重复写区间排除逻辑
# 加载依赖包
library(dplyr)

# 示例数据
df <- structure(list(group = c("A", "A", "A", "A", "A", "B", "B", "B", 
"B"), pred_val = c(22.52, 21.87, 31.45, 21.45, 19.99, 13.96, 
15.97, 6.5, 19.89), actual_val = c(21L, 21L, 21L, 21L, 21L, 16L, 
16L, 16L, 16L)), class = "data.frame", row.names = c(NA, -9L))

# 分组计算
df_result <- df %>%
  group_by(group) %>%
  mutate(
    acc_level = case_when(
      abs(pred_val - actual_val) <= 2 ~ "good",
      abs(pred_val - actual_val) <= 5 ~ "medium",
      TRUE ~ "poor"
    )
  ) %>%
  ungroup() # 操作完成后解除分组,避免后续数据处理受分组结构干扰

运行后得到的结果如下:

# A tibble: 9 × 4
  group pred_val actual_val acc_level
  <chr>    <dbl>      <int> <chr>    
1 A        22.5          21 good     
2 A        21.9          21 good     
3 A        31.4          21 poor     
4 A        21.4          21 good     
5 A        20.0          21 good     
6 B        14.0          16 medium   
7 B        16.0          16 good     
8 B         6.5          16 poor     
9 B        19.9          16 medium   

说明:当前代码默认区间包含边界值,如果需要开区间判断,只需要把判断条件里的<=替换为<即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 11:48:27