在给定开始日期和结束日期的情况下,如何创建日期范围

时间:2020-09-04 01:14:58

标签: r sqldf

我正在使用sqldf库来处理R中的数据框。目前,我有这样的数据框:

ID       Start_Date       End_Date
1          08-29           09-01

我想使用sqldf创建一个新的数据框,以在Start_Date和End_Date之间创建一个日期范围,例如,对于ID1,我希望最终的数据框如下所示:

ID        Date_Range      
1           08-29   
1           08-30   
1           08-31
1           09-01

我想我可以创建一个新的数据框。但是我想知道是否可以在sqldf中实现?

1 个答案:

答案 0 :(得分:0)

这是使用tidyverse函数扩展日期范围的一种方法。

library(dplyr)

df %>%
  mutate(across(ends_with('Date'), as.Date, '%m-%d'), 
         #You don't need the above if columns are already of type date/POSIXct
         Date_Range = purrr::map2(Start_Date, End_Date, seq, by = '1 day')) %>%
  tidyr::unnest(Date_Range) %>%
  mutate(Date_Range = format(Date_Range, '%m-%d')) %>%
  select(-Start_Date, -End_Date)

#     ID Date_Range
#  <int> <chr>     
#1     1 08-29     
#2     1 08-30     
#3     1 08-31     
#4     1 09-01     

数据

df <- structure(list(ID = 1L, Start_Date = "08-29", End_Date = "09-01"), 
      class = "data.frame", row.names = c(NA, -1L))
相关问题