You need to enable JavaScript to run this app. R语言下如何匹配两数据框日期计算3天aa_h最大值并填充
优惠活动
大模型
产品
解决方案
定价
更多

R语言下如何匹配两数据框日期计算3天aa_h最大值并填充

R语言需求实现代码方案
  • 第一步:统一日期格式,消除字符串匹配误差
    将两个数据框的ts列从字符型转为Date类型,避免因格式不一致导致的匹配失效:
    df1$ts <- as.Date(df1$ts)
    df2_mx$ts <- as.Date(df2_mx$ts)

  • 第二步:实现规则要求的3观测窗口最大值计算
    按照“匹配当日 + 向前追溯2个观测”的规则,为df1的每一行预计算对应窗口的aa_h最大值,同时做边界索引兼容处理,避免行号小于3时出现负索引报错:

    # 窗口计算函数
    calc_window_max <- function(current_row, value_col, window_size = 3) {
      # 计算窗口有效起始行,索引不小于1
      start_row <- max(1, current_row - (window_size - 1))
      max(value_col[start_row:current_row])
    }
    # 为df1新增预计算的窗口最大值列
    df1$window_aa_max <- sapply(1:nrow(df1), calc_window_max, value_col = df1$aa_h)
    
  • 第三步:关联日期完成结果赋值
    通过日期匹配将计算好的窗口最大值写入df2_mx的aa列:
    df2_mx$aa <- df1$window_aa_max[match(df2_mx$ts, df1$ts)]

运行后校验输出结果,完全匹配预期:

> df2_mx
          ts aa
1 2020-01-17  3
2 2021-01-16  6
3 2021-01-26  9
  • 原尝试代码的问题说明:
    • 未做索引边界判断,当遍历行号小于3时,(i-2):i会生成负索引,取出错误的取值区间
    • 变量名书写错误,将df2_mx误写为oh_df_mx
    • 误用which.max函数:该函数返回最大值所在的位置序号,而非最大值本身,赋值结果不符合计算要求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.27 15:15:02