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

多日期场景下按30秒间隔计算温度平均值的代码优化需求

解决跨日期汇总30秒间隔温度平均值的问题

你的核心问题是分组时未包含日期维度,导致不同日期的同一时间段数据被合并计算。以下是两种直接的修复方案:

方案一:在原有逻辑基础上添加日期分组

从datetime字段提取日期,将其加入分组键,确保每天的时间段独立计算:

library(data.table)
library(lubridate)

df_sum <- df[, 
             # 新增日期字段,同时保留原有时分秒拆分
             c('Date', 'Hour', 'Minute', 'Second') := .(as.Date(datetime), 
                                                        data.table::hour(datetime), 
                                                        minute(datetime),
                                                        second(datetime))
             ][, second_Cut := cut(Second, breaks = c(0,30,60), include.lowest = TRUE)
             # 分组时加入Date,同时用na.rm处理数据缺失
             ][, .(Avg = mean(CorTemp, na.rm = TRUE)), .(Date, Hour, Minute, second_Cut)]

方案二:更简洁的时间间隔分组(推荐)

不用手动拆分时分秒,直接用floor_date将datetime向下取整到30秒间隔,自动包含日期信息,逻辑更清晰:

library(data.table)
library(lubridate)

df_sum <- df[, 
             # 生成30秒间隔的时间标记(如2024-05-20 10:30:00、2024-05-20 10:30:30)
             time_interval := floor_date(datetime, "30 seconds")
             # 按时间间隔分组计算平均值,na.rm处理缺失值
             ][, .(Avg = mean(CorTemp, na.rm = TRUE)), by = time_interval]

补充说明

  • 两种方案都加入了na.rm = TRUE,用于处理数据缺失的情况,避免因单个缺失值导致整个时间段的平均值为NA;
  • 方案二的输出结果会以完整的时间间隔(含日期)作为分组键,更便于后续的时间序列分析。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 01:27:26