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

R tidyverse按分组基于时间、速度两个条件提取多值求助

R 分组提取极值对应字段实现方案

你需要的逻辑可以通过which.min()、which.max()定位分组内符合条件的行下标,再提取对应列值完成,修改后的完整可运行代码如下:

library(tidyverse)
group <- c(1,1,1,1,1,2,2,3,3,4,4,4,4,4,4)
time <- c(1,6,4,5,7,12,10,2,3,8,9,11,13,14,15)
speed <- c(17,6, 99, 34, 12, 5, 67, 43, 23, 12, 15, 78, 61, 78, 20)
data = data.frame(group, time, speed)
summary = data %>% 
  group_by(group) %>%
  summarise(
    firstTime = min(time), # 分组内最早时间
    firstSpeed = speed[which.min(time)], # 最早时间对应的速度
    highestSpeed = max(speed), # 分组内最高速度
    HighestSpeedTime = time[which.max(speed)] # 最高速度对应的时间
  )

代码说明

  • which.min(time)返回分组内time列最小值所在的行位置,用该下标取speed列就能得到最早时间对应的速度值
  • which.max(speed)返回分组内speed列最大值所在的行位置,用该下标取time列就能得到最高速度对应的时间值
  • 如果同一分组存在多个相同的最大/最小值,默认返回第一个出现的记录对应值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 08:45:04