始める無料で始める

インターバルと日時の比較

インターバルでよく行う作業は、ある時刻がそのインターバル内にあるか、別のインターバルと重なっているかを調べることです。

演算子%within%は、左辺の日時(またはインターバル)が右辺のインターバル内に含まれるかどうかを判定します。たとえば、y2001が2001年を表すインターバルだとします。

y2001 <- ymd("2001-01-01") %--% ymd("2001-12-31")

このとき、ymd("2001-03-30") %within% y2001TRUEを、ymd("2002-03-30") %within% y2001FALSEを返します。

int_overlaps()は似たテストを行いますが、2つのインターバルが少しでも重なっていればTRUEを返します。

1066年ごろのハレー彗星を、どの君主が見た可能性があるかを練習して確かめましょう。

この演習はコースの一部です

Rで扱う日付と時刻

コースを見る

演習の手順

ハレー彗星の出現を記述したデータセットhalleysをワークスペースに用意しました。

  • halleysを表示して日付を確認します。perihelion_dateは彗星が太陽に最も近づく日付です。start_dateend_dateは地球から彗星が見える期間の範囲です。
  • start_dateからend_dateまでのインターバルを表す新しい列visibleを作成します。
  • ある一度の出現に注目するため、halleysの14行目を抽出します。
  • halleys_1066$perihelion_datereignの中にある君主だけにmonarchsをフィルタします。
  • halleys_1066$visiblereignと重なる君主だけに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)
コードを編集して実行