计算两个日期范围之间的重叠天数

问题描述 投票:0回答:0

我需要计算两个日期范围之间重叠的天数。

  • 日期范围 #1: 参与者的注册日期和注册日期之间的间隔 + 180 天。
  • 日期范围 #2: 包含所有“冬季”月份的时间间隔(10 月 1 日至 5 月 31 日)。

我有大约 200 行数据。每行都有一个

enr_dte
的日期值。我创建了一个名为
end_dte
的变量,它是
enr_dte + days(180)
.

我试过为此使用

difftime
。只要时间间隔不完全跨越夏季或不包括夏季之后的时间,我当前的代码就会给我正确答案。如果是这样,那么我默认重叠 180 天。

我愿意使用其他包/功能来实现这一目标。

#This variable is used to change the end of the winter season depending on the end_dte
OMset <- OMset %>%
  mutate(winter_end = case_when(
    ymd(end_dte) >= ymd("2022-10-01") ~ ymd("2023-05-31"),
    ymd(end_dte) < ymd("2022-10-01") ~ ymd("2022-05-31")
  ))

OMset <- OMset %>%
  mutate(overlap_days = difftime(pmin(ymd(end_dte), ymd(winter_end)), pmax(ymd(enr_dte), ymd("2021-10-01")), units = "days")) %>%
  mutate(overlap_days = as.numeric(overlap_days))
r lubridate
© www.soinside.com 2019 - 2024. All rights reserved.