インターバルと日時の比較
インターバルでよく行う作業は、ある時刻がそのインターバル内にあるか、別のインターバルと重なっているかを調べることです。
演算子%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()は似たテストを行いますが、2つのインターバルが少しでも重なっていればTRUEを返します。
1066年ごろのハレー彗星を、どの君主が見た可能性があるかを練習して確かめましょう。
この演習はコースの一部です
Rで扱う日付と時刻
演習の手順
ハレー彗星の出現を記述したデータセットhalleysをワークスペースに用意しました。
halleysを表示して日付を確認します。perihelion_dateは彗星が太陽に最も近づく日付です。start_dateとend_dateは地球から彗星が見える期間の範囲です。start_dateからend_dateまでのインターバルを表す新しい列visibleを作成します。- ある一度の出現に注目するため、
halleysの14行目を抽出します。 halleys_1066$perihelion_dateがreignの中にある君主だけにmonarchsをフィルタします。halleys_1066$visibleがreignと重なる君主だけにmonarchsをフィルタします。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# 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)