lubridate::floor_date(x, "14 days"): 如何防止新月份重启?

lubridate::floor_date(x, "14 days"): how to prevent restart with a new month?

我正在使用 lubridate::floor_data 对多天进行分组,但它会在新的月份重新开始分组。这是阻止这种情况的替代方法吗?

floor_date(x, "7 天") 总是从每个月的第一天开始。我希望它与 floor_date(x, "week")

相同

使用来自 https://r4ds.had.co.nz/dates-and-times.html

的数据
flights_dt %>% 
mutate(
week = floor_date(dep_time, "week"), 
day7  = floor_date(dep_time, "7 days"),
day14 = floor_date(dep_time, "14 days")) 

我希望第 7 天和第 14 天从上次开始继续,而不是从本月的第一天重新开始。

解决这个问题的一种方法是将一年中的第几天归于一个日期。 您可以使用包 lubridate:

output <- flights_dt %>% mutate(day_nb = lubridate::yday(deptime)

然后要按 X 天的时间段分组,您需要计算天数除以 X 的欧氏除法:

output %>% mutate(group_7_days = day_nb %/% 7,
                  group_14_days = day_nb %/% 14)

然后您可以按这些新列分组以获得每 7/14 天周期的数据

我想我可能已经找到了解决方案:

df1<-flights_dt %>% 
mutate(
dep_date = as_date(dep_time), 
date_14days = dmy(01012013) + floor(((dep_date) - dmy(01012013))/14)*14)