Intervalle und Datetimes vergleichen
Eine häufige Aufgabe mit Intervallen ist zu prüfen, ob eine bestimmte Zeit innerhalb eines Intervalls liegt oder ob sie sich mit einem anderen Intervall überlappt.
Der Operator %within% testet, ob das Datum bzw. der Zeitpunkt (oder ein Intervall) auf der linken Seite innerhalb des Intervalls auf der rechten Seite liegt. Wenn y2001 zum Beispiel das Intervall für das Jahr 2001 ist,
y2001 <- ymd("2001-01-01") %--% ymd("2001-12-31")
Dann gibt ymd("2001-03-30") %within% y2001 TRUE zurück und ymd("2002-03-30") %within% y2001 FALSE.
int_overlaps() führt einen ähnlichen Test durch, gibt aber TRUE zurück, sobald sich zwei Intervalle überhaupt überlappen.
Übe damit, um herauszufinden, welche Monarchen den Halleyschen Kometen um 1066 gesehen haben.
Diese Übung ist Teil des Kurses
Arbeiten mit Datums- und Zeitangaben in R
Anleitung zur Übung
Wir haben halleys, einen Datensatz mit den Erscheinungen des Halleyschen Kometen, in deinem Workspace bereitgestellt.
- Gib
halleysaus, um dir die Daten anzusehen.perihelion_dateist das Datum, an dem der Komet der Sonne am nächsten ist.start_dateundend_datesind der Zeitraum, in dem der Komet von der Erde aus sichtbar ist. - Erstelle eine neue Spalte
visible, die ein Intervall vonstart_datebisend_dateist. - Du arbeitest mit einer Erscheinung: Extrahiere die 14. Zeile von
halleys. - Filtere
monarchsauf diejenigen, bei denenhalleys_1066$perihelion_dateinnerhalb vonreignliegt. - Filtere
monarchsauf diejenigen, bei denen sichhalleys_1066$visiblemitreignüberlappt.
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
# 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)