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

在R中聚合每小时温度数据:求每日温度范围的技术求助

嗨,我来帮你搞定这个R语言的温度数据处理问题!针对你提到的非标准日期和批量计算每日温变的需求,我给你两种解决方案,优先推荐更可靠的按日期分组方法,同时也满足你想按每24行计算的需求。

方案一:按日期分组(更稳妥)

首先得把你的非标准日期转换成R能识别的格式,这样就能精准按日期分组计算,避免因某天数据行数异常(比如缺记录、多记录)导致的错误。

  1. 先加载必要的包(dplyr用于数据分组汇总,lubridate处理日期更省心):
library(dplyr)
library(lubridate)
  1. 转换日期列:你的日期格式是月/日/年,用lubridate的mdy()函数可以自动识别,不用手动写格式串:
# 给数据框新增标准日期列
df$standard_date <- mdy(df$DATE_TIME)

# 如果不想用lubridate,也可以用基础R的as.Date(),指定格式:
# df$standard_date <- as.Date(df$DATE_TIME, format = "%m/%d/%Y")
  1. 分组计算每日的最低温、最高温和温差:
    注意你的温度列名带空格和括号,要用上反引号`把列名包起来,不然R会识别错误:
daily_temp_summary <- df %>%
  group_by(standard_date) %>%
  summarise(
    daily_min = min(`TEMP (DEG C)`),
    daily_max = max(`TEMP (DEG C)`),
    daily_temp_range = daily_max - daily_min
  )

运行完这个代码,daily_temp_summary就是你要的每日温度汇总数据框啦。

方案二:按每24行分组(适合数据严格按天排列且无异常的情况)

如果你确定数据集是严格按时间顺序排列,每天正好24条记录,那可以直接按行分组计算:

  1. 先给每行分配分组编号,每24行一组:
df$group_id <- ceiling(seq(nrow(df)) / 24)
  1. 按分组编号计算温变:
daily_temp_by_row <- df %>%
  group_by(group_id) %>%
  summarise(
    daily_min = min(`TEMP (DEG C)`),
    daily_max = max(`TEMP (DEG C)`),
    daily_temp_range = daily_max - daily_min
  )

小提示

  • 优先用方案一,因为实际数据中很可能出现某天记录缺失或重复的情况,按日期分组能保证计算的准确性;
  • 如果你的DATE_TIME列里还包含时间(比如5/1/1999 00:00),mdy()或者as.Date()依然能正确提取日期部分,不用额外处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:59:47