НачатьНачать бесплатно

Сравнение интервалов и дат

Одна из распространённых задач при работе с интервалами — проверить, попадает ли определённый момент времени внутрь интервала или пересекается ли один интервал с другим.

Оператор %within% проверяет, находится ли дата (или интервал) в левой части выражения внутри интервала в правой части. Например, если y2001 — это интервал, охватывающий 2001 год:

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

Тогда ymd("2001-03-30") %within% y2001 вернёт TRUE, а ymd("2002-03-30") %within% y2001FALSE.

Функция int_overlaps() выполняет похожую проверку, но возвращает TRUE, если два интервала пересекаются хотя бы частично.

Выполните упражнение, чтобы выяснить, кто из монархов наблюдал комету Галлея около 1066 года.

Это упражнение является частью курса

Работа с датами и временем в R

Посмотреть курс

Инструкции к упражнению

В вашем рабочем пространстве уже доступен набор данных halleys, описывающий появления кометы Галлея.

  • Выведите halleys на экран, чтобы изучить данные. Столбец perihelion_date содержит дату наибольшего сближения кометы с Солнцем. Столбцы start_date и end_date задают диапазон дат, в течение которых комета видна с Земли.
  • Создайте новый столбец visible — интервал от start_date до end_date.
  • Вы будете работать с одним появлением кометы: извлеките 14-ю строку из halleys.
  • Отфильтруйте 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)
Редактировать и запускать код