#> # 一个 tibble:10,633 × 9 #> origin dest dep_delay arr_delay dep_time #>
这些是过夜航班。我们对出发时间和到达时间使用了相同的日期信息,但这些航班是在第二天到达的。我们可以通过给每个过夜航班的到达时间加上 days(1) 来修正这个问题:
flights_dt <- flights_dt %>% mutate( overnight = arr_time < dep_time, arr_time = arr_time + days(overnight * 1), sched_arr_time = sched_arr_time + days(overnight * 1) )
现在我们所有的航班都符合物理定律了:
flights_dt %>% filter(overnight, arr_time < dep_time) #> # 一个 tibble:0 × 10 #> # ... 还有 10 个变量:origin
区间
dyears(1) / ddays(1) 应该返回什么是很显然的:一,因为时长总是由秒数表示,而一年的时长被定义为 365 天的秒数。
那么 years(1) / days(1) 应该返回什么?嗯,如果年份是 2015 年,它应该返回 365,但如果是 2016 年,它应该返回 366!lubridate 没有足够的信息来给出一个明确的答案。它采取的做法是给出一个估计值,并附带一条警告:
years(1) / days(1) #> estimate only: convert to intervals for accuracy #> [1] 365