如何在R语言中筛选出包含最大小时容量值的日期?
解决筛选包含最大小时容量值的日期问题
首先明确你的核心需求:找到包含单个小时容量最大值的日期,而非按日期求和后总容量最大的日期。你的数据集中,单个小时的最大容量是72,对应日期是12-02-2020,我们需要精准定位到这个日期。
你的代码问题出在哪?
你之前尝试的这段代码:
max_hour <- df %>% group_by(Date, hour) %>% summarise(total_volume = sum(volume)) %>% slice(which.max(total_volume)) %>% select(Date)
问题在于:
- 你的数据集里每个
Date+hour组合本来就只有一条记录,summarise(sum(volume))并没有改变数值; group_by(Date, hour)后用slice(which.max(total_volume)),会在每个分组里找最大值,最终得到的是每个日期内的最大小时容量,而非全局最大小时容量对应的日期。
正确的实现方案
这里提供两种简洁的实现方式,都能得到你想要的结果:
方法一:先定位全局最大值,再筛选对应日期
# 先获取全局最大的小时容量值 max_single_volume <- max(df$volume) # 筛选出包含该最大值的日期(去重避免重复结果) max_hour_date <- df %>% filter(volume == max_single_volume) %>% select(Date) %>% distinct()
方法二:链式操作一步完成
max_hour_date <- df %>% slice(which.max(volume)) %>% # 直接定位到包含最大volume值的行 select(Date)
运行任意一段代码,都会返回目标日期12-02-2020。
验证结果
我们可以先确认数据里的最大值对应记录:
> max(df$volume) [1] 72 > df[df$volume == 72, ] Date hour volume 6 12-02-2020 3 72
清晰可见,最大值72确实属于12-02-2020,上面的代码都能正确提取这个日期。
内容的提问来源于stack exchange,提问作者Sanam
相关产品推荐
相关产品推荐

