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

R语言计算多年固定日期区间(6月7日至11月9日)的气温均值

R实现每年指定生育期气温均值计算的方法

推荐使用tidyverse生态工具包完成,lubridate用于日期处理、dplyr用于数据清洗,逻辑清晰易维护,步骤如下:

步骤1:加载依赖包

# 未安装包先执行 install.packages("tidyverse")
library(tidyverse)
library(lubridate)

步骤2:转换日期格式

首先要把数据中的日期列从字符串格式转为R可识别的日期格式:

# 假设你的原始气温数据框名为df
df <- df %>%
  mutate(date = ymd(date)) 
  # 如果你的日期是日/月/年等其他格式,替换ymd为dmy/mdy等对应函数即可

步骤3:筛选生育期数据+按年求平均

生育期为每年6月7日到11月9日,按以下逻辑筛选后分组计算:

result <- df %>%
  # 提取日期对应的年、月、日维度
  mutate(
    year = year(date),
    month = month(date),
    day = day(date)
  ) %>%
  # 筛选符合生育期范围的行
  filter(
    (month == 6 & day >= 7) | 
    (month > 6 & month < 11) | 
    (month == 11 & day <= 9)
  ) %>%
  # 按年份分组计算平均气温
  group_by(year) %>%
  summarise(
    growth_period_tmean = mean(tmax, na.rm = TRUE) 
    # na.rm=TRUE参数会自动跳过缺失值,避免缺失值导致结果为NA
  )

运行后得到的result数据框即为1971-2020年每一年作物生育期的平均气温结果。


基础R实现方案(无需安装第三方包)

如果不想依赖外部包,可直接用基础R的内置函数实现:

# 转换日期格式
df$date <- as.Date(df$date)
# 提取年份、月日字符串
df$year <- format(df$date, "%Y")
df$month_day <- format(df$date, "%m-%d")
# 筛选生育期数据
target_data <- df[df$month_day >= "06-07" & df$month_day <= "11-09", ]
# 按年计算平均气温
result <- aggregate(tmax ~ year, data = target_data, FUN = mean, na.rm = TRUE)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 08:15:03