LoslegenKostenlos loslegen

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

Kurs anzeigen

Anleitung zur Übung

Wir haben halleys, einen Datensatz mit den Erscheinungen des Halleyschen Kometen, in deinem Workspace bereitgestellt.

  • Gib halleys aus, um dir die Daten anzusehen. perihelion_date ist das Datum, an dem der Komet der Sonne am nächsten ist. start_date und end_date sind der Zeitraum, in dem der Komet von der Erde aus sichtbar ist.
  • Erstelle eine neue Spalte visible, die ein Intervall von start_date bis end_date ist.
  • Du arbeitest mit einer Erscheinung: Extrahiere die 14. Zeile von halleys.
  • Filtere monarchs auf diejenigen, bei denen halleys_1066$perihelion_date innerhalb von reign liegt.
  • Filtere monarchs auf diejenigen, bei denen sich halleys_1066$visible mit reign ü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)
Code bearbeiten und ausführen