Getting Components
date_time <- ymd_hms("2026-11-09 8-13-30")
date_time
## [1] "2026-11-09 08:13:30 UTC"
year(date_time)
## [1] 2026
month(date_time, label = TRUE, abbr = FALSE)
## [1] November
## 12 Levels: January < February < March < April < May < June < ... < December
yday(date_time)
## [1] 313
mday(date_time)
## [1] 9
wday(date_time, label = TRUE, abbr = FALSE)
## [1] Monday
## 7 Levels: Sunday < Monday < Tuesday < Wednesday < Thursday < ... < Saturday
make_datetime_100 <- function(year, month, day, time) {
make_datetime(year, month, day, time %/% 100, time %% 100)
}
flights_dt <- flights %>%
filter(!is.na(dep_time), !is.na(arr_time)) %>%
mutate(
dep_time = make_datetime_100(year, month, day, dep_time),
arr_time = make_datetime_100(year, month, day, arr_time),
sched_dep_time = make_datetime_100(year, month, day, sched_dep_time),
sched_arr_time = make_datetime_100(year, month, day, sched_arr_time)
) %>%
select(origin, dest, ends_with("delay"), ends_with("time"))
flights_dt %>%
transmute(wday = wday(dep_time, label = TRUE)) %>%
ggplot(aes(wday)) +
geom_bar()

Rounding
flights_dt %>%
mutate(week = ceiling_date(dep_time, "month")) %>%
select(dep_time, week) %>%
sample_n(10)
## # A tibble: 10 × 2
## dep_time week
## <dttm> <dttm>
## 1 2013-03-16 12:58:00 2013-04-01 00:00:00
## 2 2013-03-28 14:59:00 2013-04-01 00:00:00
## 3 2013-06-17 21:11:00 2013-07-01 00:00:00
## 4 2013-05-16 10:30:00 2013-06-01 00:00:00
## 5 2013-06-15 18:43:00 2013-07-01 00:00:00
## 6 2013-08-11 19:20:00 2013-09-01 00:00:00
## 7 2013-05-28 18:49:00 2013-06-01 00:00:00
## 8 2013-12-13 07:02:00 2014-01-01 00:00:00
## 9 2013-09-15 20:55:00 2013-10-01 00:00:00
## 10 2013-05-12 13:42:00 2013-06-01 00:00:00
flights_dt %>%
mutate(week = floor_date(dep_time, "month")) %>%
select(dep_time, week) %>%
slice(2000:2010)
## # A tibble: 11 × 2
## dep_time week
## <dttm> <dttm>
## 1 2013-01-03 09:11:00 2013-01-01 00:00:00
## 2 2013-01-03 09:12:00 2013-01-01 00:00:00
## 3 2013-01-03 09:12:00 2013-01-01 00:00:00
## 4 2013-01-03 09:13:00 2013-01-01 00:00:00
## 5 2013-01-03 09:14:00 2013-01-01 00:00:00
## 6 2013-01-03 09:14:00 2013-01-01 00:00:00
## 7 2013-01-03 09:16:00 2013-01-01 00:00:00
## 8 2013-01-03 09:17:00 2013-01-01 00:00:00
## 9 2013-01-03 09:23:00 2013-01-01 00:00:00
## 10 2013-01-03 09:23:00 2013-01-01 00:00:00
## 11 2013-01-03 09:23:00 2013-01-01 00:00:00
Setting Components
flights_dt %>%
mutate(dep_hour = update(dep_time, yday = 1)) %>%
select(dep_time, dep_hour) %>%
sample_n(10)
## # A tibble: 10 × 2
## dep_time dep_hour
## <dttm> <dttm>
## 1 2013-10-31 12:50:00 2013-01-01 12:50:00
## 2 2013-07-16 07:40:00 2013-01-01 07:40:00
## 3 2013-12-22 14:31:00 2013-01-01 14:31:00
## 4 2013-11-07 07:49:00 2013-01-01 07:49:00
## 5 2013-07-12 17:19:00 2013-01-01 17:19:00
## 6 2013-02-26 08:07:00 2013-01-01 08:07:00
## 7 2013-04-29 06:24:00 2013-01-01 06:24:00
## 8 2013-03-18 07:06:00 2013-01-01 07:06:00
## 9 2013-11-28 06:35:00 2013-01-01 06:35:00
## 10 2013-11-24 12:57:00 2013-01-01 12:57:00