比較區間與日期時間
處理區間時的常見任務,是判斷某個時間點是否落在區間內,或是兩個區間是否彼此重疊。
運算子 %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)