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
相关产品推荐
相关产品推荐

