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

R语言动态筛选延迟日期:未找到目标值时自动匹配后续值

动态筛选delay值的解决方案

明确需求:当目标delay值(此处为13)不存在时,自动匹配大于目标值的最小存在delay值。以下是具体实现方案:

实现思路

  1. 定义目标delay值
  2. 从数据集中提取所有大于等于目标值的delay记录
  3. 筛选出其中最小的delay值作为实际匹配值
  4. 用该值过滤数据集得到结果

修改后的代码

library(dplyr)
library(lubridate)

set.seed(123) # 设置随机种子保证结果可复现
df <- 
  data.frame(
    fcst.dates = c(
      "2022-01-01",
      "2022-01-02",
      "2022-01-03",
      "2022-01-05",
      "2022-01-06",
      "2022-01-08",
      "2022-01-09",
      "2022-01-11",
      "2022-01-12",
      "2022-01-13",
      "2022-01-14",
      "2022-01-17"
    ),
    y = rnorm(12, 0, 1),
    yhat = rnorm(12, 0, 1)
  ) %>%
  mutate(
    fcst.dates = as.Date(fcst.dates),
    Obs = max(fcst.dates) - fcst.dates,
    delay = as.numeric(Obs)
  )

# 定义目标delay值
target_delay <- 13

# 获取实际匹配的delay值:目标值存在则用目标值,否则取大于目标值的最小存在值
actual_delay <- df %>%
  filter(delay >= target_delay) %>%
  pull(delay) %>%
  min(na.rm = TRUE)

# 执行筛选
filtered_df <- df %>%
  filter(delay == actual_delay)

# 查看结果
filtered_df

代码说明

  • set.seed(123):固定随机数生成结果,确保复现性
  • 在给定数据集中,delay=13不存在,大于13的delay值为14、15、16,因此actual_delay会取最小值14,最终筛选出delay=14的行
  • 若目标delay值存在(例如将target_delay改为14),则直接筛选对应行

内容的提问来源于stack exchange,提问作者Rodrigo H. Ozon

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 06:36:19