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

如何用R语言按日期分组查找Excel数据的最值及对应时段

处理Excel时序数据:按日期汇总最值及对应时段

情况1:已拆分日期与时间列

假设你的数据集已拆分为date(日期型)、time(时间型)、value(数值列),用tidyverse工具链处理最直观:

步骤1:加载依赖包并读取数据

library(readxl)
library(dplyr)

# 读取Excel文件
df <- read_excel("你的数据文件路径.xlsx")

# 确保日期和时间格式正确
df <- df %>%
  mutate(
    date = as.Date(date),
    time = hms::as_hms(time) # 若time是字符型,用hms包转成标准时间格式
  )

步骤2:分组汇总最值及对应时段

result <- df %>%
  group_by(date) %>%
  # 提取每日最大值及对应时间(若有多个相同最大值,取最早的)
  slice_max(value, n = 1, with_ties = FALSE) %>%
  rename(max_value = value, max_time = time) %>%
  # 合并每日最小值及对应时间
  left_join(
    df %>%
      group_by(date) %>%
      slice_min(value, n = 1, with_ties = FALSE) %>%
      rename(min_value = value, min_time = time),
    by = "date"
  ) %>%
  ungroup()

情况2:未拆分日期时间列(原始为datetime列)

如果数据只有一列datetime(如yyyy-mm-dd hh:mm:ss格式),先拆分再处理:

df <- read_excel("你的数据文件路径.xlsx") %>%
  mutate(
    date = as.Date(datetime), # 提取日期部分
    time = hms::as_hms(datetime) # 提取时间部分
  )

# 后续分组汇总代码同情况1

结果示例

若原始数据为:

datetimevalue
2024-05-01 08:30:0025
2024-05-01 12:00:0032
2024-05-01 18:45:0018
2024-05-02 09:15:0028
2024-05-02 14:30:0035
2024-05-02 20:00:0022

运行代码后输出结果:

datemax_valuemax_timemin_valuemin_time
2024-05-013212:00:001818:45:00
2024-05-023514:30:002220:00:00

注意事项

  • 若同一天存在多个相同最值,将slice_max/slice_min中的with_ties = FALSE改为TRUE,可保留所有对应时段。
  • 用class(df$date)检查日期列格式,确保为Date类型,避免分组错误。
  • 若Excel时间格式异常,可改用format(datetime, "%H:%M:%S")将时间转为字符型存储。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 18:52:29