Сравнение интервалов и дат
Одна из распространённых задач при работе с интервалами — проверить, попадает ли определённый момент времени внутрь интервала или пересекается ли один интервал с другим.
Оператор %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. - Вы будете работать с одним появлением кометы: извлеките 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)