使用 lubridate::day() 提取日期时,如何设置该日期将定义为从某个时间开始而不是午夜?

When using lubridate::day() to extract day, how to set that day will be defined as starting at a time rather than midnight?

如何使用 lubridate(或其他方式)定义从早上 5 点到凌晨 5 点而不是早上 0 点到凌晨 0 点循环的天数?

我的数据

library(tidyverse)
library(lubridate)

df <- structure(list(created_at = structure(c(1594758763, 1594804279, 
1594709405, 1594760043, 1594702619, 1594802165, 1594654865, 1594767077, 
1594750851, 1594736216), tzone = "UTC", class = c("POSIXct", 
"POSIXt")), mood = 1:10), row.names = c(NA, -10L), class = c("tbl_df", 
"tbl", "data.frame"))

df

## # A tibble: 10 x 2
##    created_at           mood
##    <dttm>              <int>
##  1 2020-07-14 20:32:43     1
##  2 2020-07-15 09:11:19     2
##  3 2020-07-14 06:50:05     3
##  4 2020-07-14 20:54:03     4
##  5 2020-07-14 04:56:59     5
##  6 2020-07-15 08:36:05     6
##  7 2020-07-13 15:41:05     7
##  8 2020-07-14 22:51:17     8
##  9 2020-07-14 18:20:51     9
## 10 2020-07-14 14:16:56    10

假设我想看看心情如何随着一天的变化而变化。
首先,我更容易将“日”定义为一个月中的某一天(在本例中为七月)。因此,使用day()提取日期是有用的。

df %>% mutate(day_in_july = day(created_at))

## # A tibble: 10 x 3
##    created_at           mood day_in_july
##    <dttm>              <int>       <int>
##  1 2020-07-14 20:32:43     1          14
##  2 2020-07-15 09:11:19     2          15
##  3 2020-07-14 06:50:05     3          14
##  4 2020-07-14 20:54:03     4          14
##  5 2020-07-14 04:56:59     5          14
##  6 2020-07-15 08:36:05     6          15
##  7 2020-07-13 15:41:05     7          13
##  8 2020-07-14 22:51:17     8          14
##  9 2020-07-14 18:20:51     9          14
## 10 2020-07-14 14:16:56    10          14

现在,为了我的目的,将“一天”定义为从凌晨 5 点开始而不是午夜更有意义。我该怎么做?

只需减去 5 小时后 day。这样一天的某个时间,比如凌晨 4 点,将被算作属于前一天。

df %>% mutate(day_in_july = day(created_at - hours(5)))
#> # A tibble: 10 x 3
#>    created_at           mood day_in_july
#>    <dttm>              <int>       <int>
#>  1 2020-07-14 20:32:43     1          14
#>  2 2020-07-15 09:11:19     2          15
#>  3 2020-07-14 06:50:05     3          14
#>  4 2020-07-14 20:54:03     4          14
#>  5 2020-07-14 04:56:59     5          13
#>  6 2020-07-15 08:36:05     6          15
#>  7 2020-07-13 15:41:05     7          13
#>  8 2020-07-14 22:51:17     8          14
#>  9 2020-07-14 18:20:51     9          14
#> 10 2020-07-14 14:16:56    10          14