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

R使用dplyr按单列分组取组内最低价格对应完整行如何实现?

问题原因

你原代码的错误在于将qty、brand字段也加入了group_by的分组维度,导致分组粒度过细,无法按fruit维度取每组最低价对应的完整行。

正确实现方法

方法1:使用slice_min(dplyr 1.0.0及以上版本推荐)

直接对fruit分组后,取每组price最小的行即可:

library(dplyr)
data %>%
  group_by(fruit) %>%
  slice_min(order_by = price, n = 1) %>%
  ungroup() # 不需要后续分组操作时可解除分组

如果同组存在多个价格相同的最低行,默认会全部返回,只需返回第一条时可添加参数with_ties = FALSE。

方法2:使用filter匹配最小值

兼容旧版本dplyr的写法:

library(dplyr)
data %>%
  group_by(fruit) %>%
  filter(price == min(price)) %>%
  ungroup()

方法3:排序后取首行

先按水果和价格升序排序,分组后取每组第一条记录:

library(dplyr)
data %>%
  arrange(fruit, price) %>%
  group_by(fruit) %>%
  slice(1) %>%
  ungroup()

以上三种方法均可得到你期望的输出结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 07:21:02