如何在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
相关产品推荐
相关产品推荐

