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

如何用R语言基于累积温度确定作物生育期达标日期及匹配生育期

R语言实现作物生育期热量达标日期与生育期匹配方案

前置依赖

优先使用tidyverse生态工具包,高效处理数据:

install.packages(c("tidyverse", "lubridate"))
library(tidyverse)
library(lubridate)

模拟示例数据

先构造符合场景的测试数据(替换为你的真实数据即可):

# 6个月的累积温度数据表(日期从2023-04-01开始,累积温度逐日递增)
set.seed(123)
cum_temp_df <- tibble(
  date = seq(as_date("2023-04-01"), as_date("2023-09-30"), by = "day"),
  cumulative_temp = cumsum(rnorm(nrow(.), mean = 8, sd = 2)) %>% round(1)
)

# 作物生育期热量阈值表(生育期按生长顺序排列,阈值递增)
thermal_requirements <- tibble(
  growth_stage = c("播种", "出苗", "分蘖", "拔节", "抽穗", "成熟"),
  thermal_req = c(0, 120, 350, 680, 1100, 1850)
)

任务1:为热量阈值表添加达标日期date_reached

核心逻辑:找到第一个累积温度≥对应生育期阈值的日期,这里提供两种高效实现方式:

方式1:模糊匹配法(易读性高)

thermal_requirements_with_date <- thermal_requirements %>%
  fuzzy_left_join(
    cum_temp_df,
    by = c("thermal_req" = "cumulative_temp"),
    match_fun = `<=`
  ) %>%
  group_by(growth_stage, thermal_req) %>%
  filter(cumulative_temp >= thermal_req) %>%
  slice_min(date) %>%  # 取最早达标日期
  ungroup() %>%
  select(growth_stage, thermal_req, date_reached = date)

方式2:向量运算(性能最优)

thermal_requirements_with_date <- thermal_requirements %>%
  mutate(
    temp_index = findInterval(thermal_req, cum_temp_df$cumulative_temp),
    date_reached = case_when(
      temp_index == 0 ~ NA_Date_,  # 无达标日期(阈值超过最大累积温度)
      TRUE ~ cum_temp_df$date[temp_index + 1]
    )
  ) %>%
  select(-temp_index)

任务2:为原始温度数据表新增growth_stage列

核心逻辑:根据每日累积温度,匹配当前所处的生育期(即最大的阈值≤当日累积温度对应的生育期),用向量级运算实现极致效率:

cum_temp_with_stage <- cum_temp_df %>%
  mutate(
    stage_index = findInterval(cumulative_temp, thermal_requirements$thermal_req),
    growth_stage = case_when(
      stage_index == 0 ~ "未进入生育期",  # 累积温度低于最低阈值
      TRUE ~ thermal_requirements$growth_stage[stage_index]
    )
  ) %>%
  select(-stage_index)

关键说明

  • 确保thermal_requirements的thermal_req是严格递增的,这是findInterval高效工作的前提;
  • 若存在多个日期满足阈值条件,任务1中slice_min(date)确保取最早的达标日期;
  • 向量式方法(findInterval)比循环/分组操作快10-100倍,适合大样本量的温度数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 04:16:19