如何解决在给定开始日期和结束日期的情况下,如何创建日期范围
我正在使用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中实现?
解决方法
这是使用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))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。