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

R语言如何将温度风速小时数据转为日均值并与PM10数据合并?

问题原因

你之前的代码存在两个明确错误,导致结果不符合预期:

  • 构造时间序列时,将两段完全相同的小时级时间序列做了拼接,直接让数据行数翻倍为26304*2=52608条
  • 创建数据框时仅传入了DateTime单个字段,没有关联实际的温度、风速观测值,因此输出的DF仅包含1列
完整处理流程

整个流程无需手动构造空时间序列,直接基于原始观测数据做聚合、合并即可,步骤如下:

1. 加载依赖包

library(lubridate)
library(dplyr)

2. 读取并预处理小时级气象数据

# 替换为你的气象数据实际存储路径
met_hourly <- read.csv("你的气象数据文件.csv")
# 按原始数据的日/月/年 时:分格式解析时间列
met_hourly$date <- dmy_hm(met_hourly$date)
# 提取日期维度(截断到天),用于后续分组计算
met_hourly$cal_date <- as.Date(met_hourly$date)

3. 聚合计算温度、风速日均值

met_daily <- met_hourly %>%
  group_by(cal_date) %>%
  summarise(
    # 计算日均值时自动跳过缺失值,可根据你的需求调整na.rm参数
    temperature_daily = mean(temperature, na.rm = TRUE),
    wind_speed_daily = mean(Wind_Speed, na.rm = TRUE),
    .groups = "drop"
  )

校验提示:你的数据时间范围覆盖2018-01-01至2020-12-31共3年,正常聚合后met_daily应为1096行,和你持有的PM10序列长度完全一致。

4. 与PM10日序列合并

合并前先确认你的PM10原子向量是严格按2018-01-01到2020-12-31的自然日顺序排列,无乱序、缺漏,直接执行绑定即可:

# 生成匹配的日期序列,和PM10的时间范围一一对应
full_date <- seq.Date(from = as.Date("2018-01-01"), to = as.Date("2020-12-31"), by = "day")

# 合并为最终分析数据集
final_dataset <- data.frame(
  date = full_date,
  PM10 = 替换为你的PM10向量对象名,
  temperature = met_daily$temperature_daily,
  wind_speed = met_daily$wind_speed_daily
)
注意事项
  • 如果聚合后met_daily行数不等于1096,可通过sum(is.na(met_hourly$date))检查是否存在时间解析失败的记录,同时排查原始数据是否存在整段缺测
  • 你的原始小时数据从2018-01-01 1:00起始,到2021-01-01 0:00截止,时间范围完整覆盖3年自然日,正常情况下不会出现聚合后的日期缺口

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 11:27:18