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

如何在R中基于分钟级数据计算小时均值并绘制图表?

分钟级PM2.5数据转小时均值及可视化(R语言实现)

步骤1:数据预处理

先清理数据中的格式问题(ID列末尾的多余点、日期列末尾的多余点),并将日期转换为R可识别的时间格式:

# 加载核心工具包
library(tidyverse)
library(lubridate)

# 读入数据(替换为你的数据文件路径,若为CSV格式则用read.csv)
pm25_raw <- read.table("pm25_data.txt", header = TRUE, stringsAsFactors = FALSE)

# 清理并转换数据
pm25_cleaned <- pm25_raw %>%
  mutate(
    # 移除ID列末尾的点
    ID = str_remove(ID, "\\.$"),
    # 清理日期列末尾的点并转换为标准时间格式
    datetime = ymd_hms(str_remove(date., "\\.$"))
  )

步骤2:计算小时均值

按监测点ID和小时时间分组,计算每组的PM2.5均值:

pm25_hourly_avg <- pm25_cleaned %>%
  # 将时间向下取整到小时级别
  mutate(hourly_period = floor_date(datetime, unit = "hour")) %>%
  # 按ID和小时分组计算均值,忽略缺失值
  group_by(ID, hourly_period) %>%
  summarise(pm25_mean = mean(pm25, na.rm = TRUE)) %>%
  ungroup()

步骤3:绘制小时均值趋势图

用ggplot2绘制折线图展示小时均值的变化趋势:

ggplot(pm25_hourly_avg, aes(x = hourly_period, y = pm25_mean)) +
  geom_line(color = "#0073C2FF", linewidth = 1) +
  geom_point(color = "#CD534CFF", size = 2) +
  labs(
    title = "PM2.5小时均值变化",
    x = "时间",
    y = "PM2.5小时均值(μg/m³)"
  ) +
  theme_minimal() +
  theme(
    plot.title = element_text(hjust = 0.5, size = 14, face = "bold"),
    axis.text.x = element_text(angle = 45, hjust = 1)
  )

补充说明

  • 若数据存在缺失值,na.rm = TRUE会自动忽略,可根据实际情况调整
  • 如需柱状图展示,只需将geom_line替换为geom_col
  • 可自行修改图表的颜色、字体大小等样式参数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 11:32:40