计算特定时间段的周数
Calculating numbers of week for a specific time period
您好,我有这个数据框,其中包含医疗保健服务的开始和结束日期。它看起来像这样:
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
其中“wks_FY16”表示 2016 财政年度。
我觉得difftime
应该有用,但我不知道如何指定我需要的时间段。我将非常感谢你在这方面的帮助。
在对“2016”年
进行更正后,我们使用 difftime
得到 'weeks' 的差异
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")))
您好,我有这个数据框,其中包含医疗保健服务的开始和结束日期。它看起来像这样:
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
其中“wks_FY16”表示 2016 财政年度。
我觉得difftime
应该有用,但我不知道如何指定我需要的时间段。我将非常感谢你在这方面的帮助。
在对“2016”年
进行更正后,我们使用difftime
得到 'weeks' 的差异
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")))