为日期范围内的每一天添加参考

Add a reference for each day in a date range

**** 已更新,因为我错过了一些有价值的信息,即日期记录在数据集中不是唯一的。****

我敢肯定这很简单,但如果不手动查找 table 各个日期和参考文献,我无法弄清楚如何做到这一点。

我有 table 个日期 (y/m/d) 和几个日期范围。

我的约会对象是这样的:

Date
2022/4/11
2022/4/12
2022/4/13
2022/4/13
2022/4/13
2022/4/13
2022/4/13
2022/4/14
2022/4/14
2022/4/14
2022/4/15
2022/4/16
2022/4/16
2022/4/16

我的日期范围是这样的:

Start.date Completed.date
2022/4/13 2022/4/16

如何添加一列来显示日期系列?我的输出应该是这样的:

Date Date.number
2022/4/11
2022/4/12
2022/4/13 1
2022/4/13 1
2022/4/13 1
2022/4/13 1
2022/4/13 1
2022/4/14 2
2022/4/14 2
2022/4/14 2
2022/4/15 3
2022/4/16 4
2022/4/16 4
2022/4/16 4
2022/4/17
2022/4/17
2022/4/18

非常感谢您的帮助。

table 的代码:

Date.range <- structure(list(Start.date = "2022/4/13", Completed.date = "2022/4/16"), class = "data.frame", row.names = c(NA,-1L))

Date <- structure(list(Date = c("2022/4/11", "2022/4/12", "2022/4/13", 
                                 "2022/4/14", "2022/4/14","2022/4/14","2022/4/15", "2022/4/16","2022/4/16","2022/4/16",
                                 "2022/4/17","2022/4/17","2022/4/18")), class = "data.frame", row.names = c(NA,-6L))

可能的解决方案:

library(dplyr)
library(lubridate)

Date.range <- structure(list(Start.date = "2022/4/13", Completed.date = "2022/4/16"), class = "data.frame", row.names = c(NA,-1L))

Date <- data.frame(
  Date = c("2022/4/11","2022/4/12","2022/4/13","2022/4/13",
           "2022/4/13","2022/4/13","2022/4/13","2022/4/14",
           "2022/4/14","2022/4/14","2022/4/15","2022/4/16",
           "2022/4/16","2022/4/16"))

Date %>% 
  mutate(Day.number = ymd(Date) >= ymd(Date.range$Start.date) & ymd(Date) <= ymd(Date.range$Completed.date)) %>% 
  group_by(Date) %>% 
  mutate(Day.number = if_else(Day.number, cur_group_id(), NA_integer_)) %>%
  ungroup %>% 
  mutate(Day.number = Day.number - min(Day.number, na.rm = T) + 1)

#> # A tibble: 14 × 2
#>    Date      Day.number
#>    <chr>          <dbl>
#>  1 2022/4/11         NA
#>  2 2022/4/12         NA
#>  3 2022/4/13          1
#>  4 2022/4/13          1
#>  5 2022/4/13          1
#>  6 2022/4/13          1
#>  7 2022/4/13          1
#>  8 2022/4/14          2
#>  9 2022/4/14          2
#> 10 2022/4/14          2
#> 11 2022/4/15          3
#> 12 2022/4/16          4
#> 13 2022/4/16          4
#> 14 2022/4/16          4