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

按分组获取最值、中位数对应名称及总值的R语言数据处理需求

分组提取关联数值对应的字符串并汇总统计

原始数据

我们有如下tibble表格:

# A tibble: 6 x 3
  Group Name  Value
  <chr> <chr> <dbl>
1 VA    John      2
2 VA    James     6
3 VA    Joe       3
4 NY    Emily     6
5 NY    Dave      3
6 NY    Deb       4

需求说明

按Group字段分组,返回每组中:

  • Value最大值对应的Name(命名为Max)
  • Value最小值对应的Name(命名为Min)
  • Value中位数对应的Name(命名为Med)
  • 该组Value的总和(命名为Total)

解决方案

使用dplyr包可以高效实现需求,代码如下:

library(dplyr)

# 假设原始数据存储在original_df中
result_df <- original_df %>%
  group_by(Group) %>%
  summarize(
    Max = slice_max(Value, n = 1) %>% pull(Name),
    Min = slice_min(Value, n = 1) %>% pull(Name),
    Med = filter(Value == median(Value)) %>% pull(Name),
    Total = sum(Value)
  )

结果验证

运行代码后得到的结果与期望一致:

# A tibble: 2 x 5
  Group Max   Min   Med   Total
  <chr> <chr> <chr> <chr> <dbl>
1 VA    James John  Joe      11
2 NY    Emily Dave  Deb      12

代码说明

  • group_by(Group):按Group字段对数据分组
  • slice_max(Value, n = 1):提取每组中Value最大的行,再通过pull(Name)获取对应的姓名
  • slice_min(Value, n = 1):同理提取每组Value最小对应的姓名
  • filter(Value == median(Value)):筛选出Value等于该组中位数的行,再提取姓名;由于每组数据量为3,中位数唯一,无需处理多值情况
  • sum(Value):计算每组Value的总和

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 03:37:03