如何使用 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()
我有这个数据框:
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()