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

R语言使用dplyr mutate实现跨分组按最大年份值排名

需求说明
  • 基于数据集内最大年份对应的Value指标值,对Grp分组做全局降序排名
  • 同一Grp下所有年份的记录共享该分组的排名值
  • 要求使用dplyr的mutate方案实现,输出结果可直接通过管道传入后续数据处理、绘图流程
示例输入数据
data <- structure(list(
    YEAR = c(2020L, 2019L, 2020L, 2019L, 2020L, 2019L), 
    Grp = c("A", "A", "B", "B", "C", "C"), 
    Value = c(25L, 24L, 35L, 34L, 45L, 44L)), 
    class = "data.frame", row.names = c(NA, -6L))

示例预期:最大年份为2020年,C组2020年Value=45排第1,B组2020年Value=35排第2,A组2020年Value=25排第3,各组2019年记录Rank值与2020年保持一致。

实现代码
library(dplyr)

result <- data %>%
  group_by(Grp) %>%
  # 匹配当前分组最大年份对应Value在全局最大年份Value降序序列中的位置,即为排名
  mutate(Rank = match(
    x = Value[YEAR == max(YEAR)],
    table = sort(.$Value[.$YEAR == max(.$YEAR)], decreasing = TRUE)
  )) %>%
  ungroup()
输出结果

运行代码后得到的结果完全符合预期:

# A tibble: 6 × 4
   YEAR Grp   Value  Rank
  <int> <chr> <int> <int>
1  2020 A        25     3
2  2019 A        24     3
3  2020 B        35     2
4  2019 B        34     2
5  2020 C        45     1
6  2019 C        44     1

该实现全程在dplyr管道流程内完成,输出结果可直接接入ggplot()等后续绘图步骤,无需额外数据格式转换。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 07:27:37