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

按日和小时分组计算平均E5油价的技术求助:日期时区格式转换问题及dplyr实现可行性验证

解决带时区的日期转换及按日小时分组计算均价问题

首先,你遇到的日期转换问题,核心是用错了lubridate的函数——你的日期格式是YYYY-MM-DD HH:MM:SS+时区,应该用ymd_hms()而不是mdy_hms()(后者是针对月-日-年格式的),这个函数完美支持带时区标识的ISO格式日期字符串,转换代码如下:

library(lubridate)
price_2019$date <- ymd_hms(price_2019$date)

接下来看你写的dplyr代码,思路是对的,但有两个小细节需要调整:

  • 你数据里的价格列是e5,但代码里写的是mean(price),这里要对应改成mean(e5)
  • 建议加上na.rm = TRUE,避免数据中的缺失值导致均值计算出错

修正后的完整代码如下:

library(dplyr)
library(lubridate)

# 第一步:正确转换带时区的日期格式
price_2019$date <- ymd_hms(price_2019$date)

# 第二步:按小时(包含日期)分组计算平均e5价格
agg_price <- price_2019 %>%
  group_by(Date_Hour = floor_date(date, "hour")) %>%
  summarize(mean_e5_price = mean(e5, na.rm = TRUE))

另外,如果你希望分组结果更直观,把日期和小时拆成单独的列,也可以这样写:

agg_price <- price_2019 %>%
  mutate(
    date_only = as.Date(date),  # 提取日期部分
    hour_only = hour(date)      # 提取小时部分
  ) %>%
  group_by(date_only, hour_only) %>%
  summarize(mean_e5_price = mean(e5, na.rm = TRUE))

这两种方式都能实现你按日和小时分组计算平均价格的需求,选哪种看你对输出格式的偏好~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 03:47:31