比较区间与日期时间
处理区间时的常见任务是判断某个时间是否落在区间内,或它是否与另一个区间重叠。
运算符 %within% 用于测试左侧的日期时间(或区间)是否位于右侧的区间内。例如,若 y2001 表示覆盖 2001 年的区间,
y2001 <- ymd("2001-01-01") %--% ymd("2001-12-31")
则 ymd("2001-03-30") %within% y2001 会返回 TRUE,而 ymd("2002-03-30") %within% y2001 会返回 FALSE。
int_overlaps() 会进行类似的测试,但只要两个区间有任何重叠就会返回 true。
通过练习来找出大约在 1066 年看到哈雷彗星的君主。
本练习是课程的一部分
在 R 中处理日期和时间
练习说明
我们已在您的工作区放入了 halleys 数据集,描述了哈雷彗星的出现。
- 打印
halleys以查看日期信息。perihelion_date表示彗星距离太阳最近的日期。start_date和end_date表示从地球可见的日期范围。 - 新建一列
visible,其值为从start_date到end_date的区间。 - 您将只处理一次出现,提取
halleys的第 14 行。 - 过滤
monarchs,保留halleys_1066$perihelion_date位于reign区间内的行。 - 再次过滤
monarchs,保留halleys_1066$visible与reign有重叠的行。
交互式实操练习
通过完成这段示例代码来试试这个练习。
# Print halleys
halleys
# New column for interval from start to end date
halleys <- halleys %>%
mutate(visible = ___)
# The visitation of 1066
halleys_1066 <- halleys[__, ]
# Monarchs in power on perihelion date
monarchs %>%
filter(___) %>%
select(name, from, to, dominion)
# Monarchs whose reign overlaps visible time
monarchs %>%
filter(___) %>%
select(name, from, to, dominion)