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

如何在R语言dplyr中按ID分组后自定义函数计算等级并输出完整数据框?

在R中用dplyr实现分组、等级评估并输出完整数据框

步骤1:加载dplyr包

先确保安装并加载dplyr工具包:

# 未安装的话先执行安装命令
# install.packages("dplyr")
library(dplyr)

步骤2:准备数据(替换为你的实际数据)

假设你的原始数据框包含ID和需要评估等级的指标(比如score),先模拟一份示例数据:

df <- tibble(
  ID = c(1,1,1,2,2,3,3,3,3),
  score = c(85,92,78,65,72,90,88,55,60)
)

步骤3:定义等级评估函数

根据你的业务规则自定义等级逻辑,以下是两种常见场景的函数示例:

示例1:按固定区间划分等级(全局/组内通用)

get_level <- function(score) {
  case_when(
    score >= 90 ~ "优秀",
    score >= 80 & score < 90 ~ "良好",
    score >= 60 & score < 80 ~ "及格",
    score < 60 ~ "不及格",
    TRUE ~ NA_character_
  )
}

示例2:按组内排名比例划分等级

get_group_level <- function(score) {
  rank_pct <- percent_rank(score)
  case_when(
    rank_pct >= 0.8 ~ "优秀",
    rank_pct >= 0.3 & rank_pct < 0.8 ~ "良好",
    rank_pct < 0.3 ~ "待提升"
  )
}

步骤4:分组处理并输出完整数据框

用group_by()按ID分组,再通过mutate()调用自定义函数添加等级列:

场景1:全局等级评估(无需组内计算可跳过分组)

df_result <- df %>%
  mutate(level = get_level(score))

场景2:组内等级评估(按ID分组后计算)

df_result <- df %>%
  group_by(ID) %>%
  mutate(group_level = get_group_level(score)) %>%
  ungroup()  # 取消分组,恢复普通数据框结构

查看最终结果

直接打印输出完整数据框:

print(df_result)

输出示例(以组内等级为例):

# A tibble: 9 × 3
     ID score group_level
  <dbl> <dbl> <chr>      
1     1    85 良好       
2     1    92 优秀       
3     1    78 待提升     
4     2    65 待提升     
5     2    72 优秀       
6     3    90 优秀       
7     3    88 良好       
8     3    55 待提升     
9     3    60 待提升     

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 08:15:31