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

R语言:为数据框新增自另一表上次AC事件后的天数字段

R实现代码

你可以用tidyverse套件快速实现该需求,步骤如下:

步骤1:预处理AC事件日期表

首先对AC事件表去重,仅保留每个公园的有效AC事件日期:

library(tidyverse)

# 提取每个公园的所有AC事件日期,同一天重复AC事件去重
ac_clean <- Reaction_per_park_per_day_3 %>%
  select(Park, ac_date = Date) %>%
  distinct()

步骤2:关联两个表并计算间隔天数

通过公园字段关联两张表,筛选每个上报记录对应的有效历史AC事件,计算最近间隔:

final_result <- All_reports_per_month2 %>%
  # 同公园的上报记录匹配所有该公园的AC日期
  left_join(ac_clean, by = "Park", relationship = "many-to-many") %>%
  # 按原上报记录的唯一标识分组
  group_by(Month, Park, Code, Reports_per_month) %>%
  summarise(
    Days_since_last_AC = {
      # 筛选早于等于上报日期的AC事件
      valid_ac <- ac_date[ac_date <= Month]
      # 无有效AC事件返回NA,否则计算间隔天数
      if(length(valid_ac) == 0) NA_integer_ else as.integer(Month - max(valid_ac))
    },
    .groups = "drop"
  )

运行上述代码后final_result就是你需要的输出结果,和你给出的预期示例完全匹配。如果你的数据量超过10万行,也可以用data.table实现更高效率的计算,核心逻辑和上述一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 11:36:04