←
PDF 266 / 520 From Individual Components
→
English · PDF 266
Original PDF page 266
中文 · PDF 266

从单独的组件创建

有时你得到的不是单个字符串,而是分散在多列中的日期时间的各个组件。flights 数据就是这种情况:

flights %>% select(year, month, day, hour, minute) #> # A tibble: 336,776 × 5 #> year month day hour minute #> #> 1 2013 1 1 5 15 #> 2 2013 1 1 5 29 #> 3 2013 1 1 5 40 #> 4 2013 1 1 5 45 #> 5 2013 1 1 6 0 #> 6 2013 1 1 5 58 #> # ... with 3.368e+05 more rows

要从这类输入创建日期/时间,对日期使用 make_date(),对日期时间使用 make_datetime():

flights %>% select(year, month, day, hour, minute) %>% mutate( departure = make_datetime(year, month, day, hour, minute) ) #> # A tibble: 336,776 × 6 #> year month day hour minute departure #> #> 1 2013 1 1 5 15 2013-01-01 05:15:00 #> 2 2013 1 1 5 29 2013-01-01 05:29:00 #> 3 2013 1 1 5 40 2013-01-01 05:40:00 #> 4 2013 1 1 5 45 2013-01-01 05:45:00 #> 5 2013 1 1 6 0 2013-01-01 06:00:00 #> 6 2013 1 1 5 58 2013-01-01 05:58:00 #> # ... with 3.368e+05 more rows

让我们对 flights 中的四个时间列做同样的处理。这些时间以一种略显奇怪的格式表示,所以我们使用模运算来提取小时和分钟组件。一旦创建了日期时间变量,我就聚焦于本章其余部分将要探索的变量:

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)) %>