r-计算特定时间段的周数



嗨,我有这个数据框架,它包含医疗服务的开始和结束日期。它看起来像这样:

id <- c("A", "B", "B", "C", "D")
start_date <- c("2014-08-18", "2014-08-04", "2016-10-10", "2016-04-01", "2015-12-31")
end_date <- c("2018-09-01", "2019-09-22", "2016-10-18", "2016-05-01", "2016-04-08")
df <- data.frame(id, start_date, end_date)
id    start_date     end_date
1  A    2014-08-18    2018-09-01
2  B    2014-08-04    2019-09-22
3  B    2016-10-10    2016-10-18
4  C    2016-04-01    2016-05-01
5  D    2015-12-31    2016-04-08

ID不是唯一的,因为人们可能同时拥有多个服务。这些服务可能跨越许多年。但是,我想计算2016财政年度内每项服务的周数,该财政年度从2016-04-01开始,到2017-03-31结束。我想要的数据帧是:

id    start_date    end_date       wks_FY16
1  A    2014-08-18    2018-09-01        52
2  B    2014-08-04    2019-09-22        52
3  B    2016-10-10    2016-10-18         1
4  C    2016-04-01    2016-05-01         4
5  D    2015-12-31    2016-04-08         1

其中";FY16周";代表2016财政年度。

我认为difftime应该很有用,但我不知道如何指定我需要的周期。我将非常感谢你在这方面的帮助。

在对"2016"年进行校正后,我们使用difftime获得以"周"为单位的差异

library(dplyr)
df %>% 
mutate(across(start_date:end_date, as.Date), 
wks_FY16 = as.integer(difftime(pmin(end_date, 
as.Date('2017-03-31')), pmax(as.Date('2016-04-01'),
start_date), units = "weeks")))

最新更新