我有一系列在不同时期部署的接收器。数据集如下所示:
接收器 | 开始_dt | 结束_dt |
---|---|---|
1 | 2021-05-19 15:43:00 | 2022-06-19 12:43:00 |
2 | 2021-08-19 15:43:00 | 2022-05-10 18:43:00 |
3 | 2021-12-19 15:43:00 | 2022-06-19 12:43:00 |
我想提取每个接收器在开始日期和结束日期内部署的每个月年,以便每个接收器链接到其各自活跃的月年。这是我想要实现的目标的一个例子:
接收器 | 月年 |
---|---|
1 | 2021-05 |
1 | 2021-06 |
1 | 2021-07 |
1 | 2021-08 |
1 | 2021-09 |
1 | 2021-10 |
1 | 2021-11 |
1 | 2021-12 |
1 | 2022-01 |
1 | 2022-01 |
1 | 2022-02 |
1 | 2022-03 |
1 | 2022-04 |
1 | 2022-05 |
1 | 2022-06 |
2 | 2021-08 |
2 | 2021-09 |
2 | 2021-10 |
2 | 2021-11 |
2 | 2021-12 |
2 | 2022-01 |
2 | 2022-02 |
2 | 2022-03 |
2 | 2022-04 |
2 | 2022-05 |
3 | 2021-12 |
3 | 2022-01 |
3 | 2022-02 |
3 | 2022-03 |
3 | 2022-04 |
3 | 2022-05 |
3 | 2022-06 |
我不确定 lubridate 是否是最好的选择?在我看来,它似乎相对简单,但我似乎无法让它与它一起工作或使用堆栈上的其他示例。
感谢您的帮助。
library(lubridate); library(dplyr)
df |>
mutate(across(ends_with("dt"), ~floor_date(as_date(ymd_hms(.)), "month"))) |>
reframe(monthyear = seq.Date(start_dt, end_dt, "month"), .by = Receiver)
结果
Receiver monthyear
1 1 2021-05-01
2 1 2021-06-01
3 1 2021-07-01
4 1 2021-08-01
5 1 2021-09-01
6 1 2021-10-01
7 1 2021-11-01
8 1 2021-12-01
9 1 2022-01-01
10 1 2022-02-01
11 1 2022-03-01
12 1 2022-04-01
13 1 2022-05-01
14 1 2022-06-01
15 2 2021-08-01
16 2 2021-09-01
17 2 2021-10-01
18 2 2021-11-01
19 2 2021-12-01
20 2 2022-01-01
21 2 2022-02-01
22 2 2022-03-01
23 2 2022-04-01
24 2 2022-05-01
25 3 2021-12-01
26 3 2022-01-01
27 3 2022-02-01
28 3 2022-03-01
29 3 2022-04-01
30 3 2022-05-01
31 3 2022-06-01