开始使用免费开始使用

比较区间与日期时间

处理区间时的常见任务是判断某个时间是否落在区间内,或它是否与另一个区间重叠。

运算符 %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_dateend_date 表示从地球可见的日期范围。
  • 新建一列 visible,其值为从 start_dateend_date 的区间。
  • 您将只处理一次出现,提取 halleys 的第 14 行。
  • 过滤 monarchs,保留 halleys_1066$perihelion_date 位于 reign 区间内的行。
  • 再次过滤 monarchs,保留 halleys_1066$visiblereign 有重叠的行。

交互式实操练习

通过完成这段示例代码来试试这个练习。

# 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)
编辑并运行代码