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

如何按不同时间尺度整理气象数据并计算逐年逐季节累计降水量

计算年度季节累计降水量及多时间尺度数据整理方法

针对你提供的月降水量时间序列数据,以下是用R语言实现需求的具体步骤:

1. 数据预处理(日期格式转换)

首先需要将字符型的date列转换为可识别的日期格式,并提取年份、月份用于后续分组:

# 加载必要工具包
library(tidyverse)

# 假设你的原始数据如下(示例)
date <- c("JAN-2001", "FEB-2001", "MAR-2001", "DEC-2010")
precipitation <- c(0, 3.3, 8.8, 304.5)
mydata1 <- data.frame(date, precipitation)

# 转换日期格式,提取年份和月份
mydata1 <- mydata1 %>%
  mutate(
    date = parse_date_time(date, "%b-%Y"),  # 将"JAN-2001"转为标准日期
    year = year(date),
    month = month(date)
  )

2. 定义季节并计算累计降水量

气象领域常用季节划分:春季(3-5月)、夏季(6-8月)、秋季(9-11月)、冬季(12-2月)。注意12月会归属到下一年的冬季(例如2010年12月属于2011年冬季),需调整年份标签:

# 添加季节和季节归属年份列
mydata1 <- mydata1 %>%
  mutate(
    season = case_when(
      month %in% 3:5 ~ "春季",
      month %in% 6:8 ~ "夏季",
      month %in% 9:11 ~ "秋季",
      month %in% c(1,2,12) ~ "冬季"
    ),
    season_year = ifelse(month == 12, year + 1, year)
  )

# 按季节年份和季节分组,计算累计降水量
seasonal_total_precip <- mydata1 %>%
  group_by(season_year, season) %>%
  summarise(total_precip = sum(precipitation, na.rm = TRUE)) %>%
  ungroup()

执行后seasonal_total_precip即为每年各季节的累计降水量结果。

3. 不同时间尺度的数据整理方法

月度尺度

直接按年份和月份分组,可计算月度累计/平均降水量:

monthly_precip <- mydata1 %>%
  group_by(year, month) %>%
  summarise(total_precip = sum(precipitation, na.rm = TRUE))

季度尺度

利用lubridate的quarter()函数提取季度,再分组汇总:

quarterly_precip <- mydata1 %>%
  mutate(quarter = quarter(date)) %>%
  group_by(year, quarter) %>%
  summarise(total_precip = sum(precipitation, na.rm = TRUE))

年度尺度

按年份直接分组计算年累计降水量:

annual_precip <- mydata1 %>%
  group_by(year) %>%
  summarise(total_precip = sum(precipitation, na.rm = TRUE))

自定义时间窗口

例如按半年、每3个月等自定义周期,使用floor_date()函数实现:

# 半年尺度
half_year_precip <- mydata1 %>%
  mutate(half_year = floor_date(date, "6 months")) %>%
  group_by(half_year) %>%
  summarise(total_precip = sum(precipitation, na.rm = TRUE))

# 每3个月自定义窗口(非自然季度)
custom_3month_precip <- mydata1 %>%
  mutate(custom_period = floor_date(date, "3 months")) %>%
  group_by(custom_period) %>%
  summarise(total_precip = sum(precipitation, na.rm = TRUE))

注:所有汇总步骤中加入na.rm = TRUE是为了处理可能存在的缺失数据,根据实际需求可调整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 09:25:34