←
PDF 275 / 520 Time Spans
→
English · PDF 275
Original PDF page 275
中文 · PDF 275
    1. 是什么使得钻石数据集 $carat 与航班数据集 $sched_dep_time 的分布相似?
    1. 验证我的假设:航班在第 20–30 分钟和 50–60 分钟提前出发是由按计划提前离港的航班造成的。提示:创建一个二元变量,用来指示航班是否延误。

时间跨度

接下来你将学习日期的算术运算,包括减法、加法和除法。在此过程中,你会了解三个表示时间跨度的重要类:

  • 时长(Durations),表示精确的秒数。
  • 周期(Periods),表示人类常用的时间单位,如周和月。
  • 区间(Intervals),表示一个起点和一个终点。

时长

在 R 中,当你对两个日期做减法时,会得到一个 difftime 对象:

# Hadley 多大了? h_age <- today() - ymd(19791014) h_age #> Time difference of 13511 days

difftime 类对象记录的时间跨度可以是秒、分钟、小时、天或周。这种歧义使得 difftime 用起来有些麻烦,因此 lubridate 提供了一种始终使用秒的替代方案——时长(duration):

as.duration(h_age) #> [1] "1167350400s (~36.99 years)"

时长提供了许多便捷的构造函数:

dseconds(15) #> [1] "15s" dminutes(10) #> [1] "600s (~10 minutes)" dhours(c(12, 24)) #> [1] "43200s (~12 hours)" "86400s (~1 days)" ddays(0:5) #> [1] "0s" "86400s (~1 days)" #> [3] "172800s (~2 days)" "259200s (~3 days)"