←
PDF 278 / 520 Intervals
→
English · PDF 278
Original PDF page 278
中文 · PDF 278

#> # 一个 tibble:10,633 × 9 #> origin dest dep_delay arr_delay dep_time #> #> 1 EWR BQN 9 -4 2013-01-01 19:29:00 #> 2 JFK DFW 59 NA 2013-01-01 19:39:00 #> 3 EWR TPA -2 9 2013-01-01 20:58:00 #> 4 EWR SJU -6 -12 2013-01-01 21:02:00 #> 5 EWR SFO 11 -14 2013-01-01 21:08:00 #> 6 LGA FLL -10 -2 2013-01-01 21:20:00 #> # ... 还有 1.063e+04 行,以及 4 个更多变量: #> # sched_dep_time , arr_time , #> # sched_arr_time , air_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 , dest , #> # dep_delay , arr_delay , dep_time , #> # 计划出发时间 , 到达时间 , #> # 计划到达时间 , 飞行时间 , 过夜

区间

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