如何使用 complete 来填写连续两年的日期,例如2021 和 2022

How to use complete to fill dates of two consecutive year e.g. 2021 and 2022

我有这个数据框:

DF <- tribble(
  ~date, ~value,
  "2021-12-01", 1,
  "2022-01-01", 2)

  date       value
  <chr>      <dbl>
1 2021-12-01     1
2 2022-01-01     2

通常我使用complete来填充每个月的所有天数: 这里我又用了complete:

library(tidyr)
library(dplyr)
library(lubridate)
DF %>% 
  mutate(date = ymd(date)) %>% 
  complete(date = seq(min(date), max(date), by = 'day')) %>% 
  data.frame()

我得到:

         date value
1  2021-12-01     1
2  2021-12-02    NA
3  2021-12-03    NA
4  2021-12-04    NA
5  2021-12-05    NA
6  2021-12-06    NA
7  2021-12-07    NA
8  2021-12-08    NA
9  2021-12-09    NA
10 2021-12-10    NA
11 2021-12-11    NA
12 2021-12-12    NA
13 2021-12-13    NA
14 2021-12-14    NA
15 2021-12-15    NA
16 2021-12-16    NA
17 2021-12-17    NA
18 2021-12-18    NA
19 2021-12-19    NA
20 2021-12-20    NA
21 2021-12-21    NA
22 2021-12-22    NA
23 2021-12-23    NA
24 2021-12-24    NA
25 2021-12-25    NA
26 2021-12-26    NA
27 2021-12-27    NA
28 2021-12-28    NA
29 2021-12-29    NA
30 2021-12-30    NA
31 2021-12-31    NA
32 2022-01-01     2

所以 2022 年 1 月没有填写或完成?!

所需的输出 与上面相同 + 2022 年 1 月的所有天数。

我正在寻找不向数据框添加任何额外日期的解决方案。

如果要包括 2022 年 1 月,需要在 DF 中指定 1 月的最后一天:

DF <- tribble(
  ~date, ~value,
  "2021-12-01", 1,
  "2022-01-01", 2)

DF %>% 
  mutate(date = ymd(date)) %>% 
  complete(date = seq(min(date), max(ceiling_date(date, unit = "month") - ddays(1)), by = 'day')) %>% 
  data.frame()