Intervallen en datetimes vergelijken
Een veelvoorkomende taak met intervallen is nagaan of een bepaald tijdstip binnen het interval valt, of dat het overlapt met een ander interval.
De operator %within% test of de datetime (of het interval) aan de linkerkant binnen het interval aan de rechterkant valt. Als y2001 bijvoorbeeld het interval is dat het jaar 2001 beslaat,
y2001 <- ymd("2001-01-01") %--% ymd("2001-12-31")
Dan geeft ymd("2001-03-30") %within% y2001 TRUE terug en ymd("2002-03-30") %within% y2001 FALSE.
int_overlaps() voert een vergelijkbare test uit, maar geeft true terug als twee intervallen elkaar op enig punt overlappen.
Oefen om te ontdekken welke vorsten Halley's komeet rond 1066 hebben gezien.
Deze oefening maakt deel uit van de cursus
Werken met datums en tijden in R
Oefeninstructies
We hebben halleys, een gegevensset met verschijningen van Halley's komeet, aan je werkruimte toegevoegd.
- Print
halleysom de gegevens te bekijken.perihelion_dateis de datum waarop de komeet het dichtst bij de zon staat.start_dateenend_datezijn het datumbereik waarin de komeet vanaf de aarde zichtbaar is. - Maak een nieuwe kolom,
visible, die een interval vormt vanstart_datetotend_date. - Je werkt met één verschijning: haal de 14e rij uit
halleys. - Filter
monarchstot de gevallen waarhalleys_1066$perihelion_datebinnenreignvalt. - Filter
monarchstot de gevallen waarhalleys_1066$visibleoverlapt metreign.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
# 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)