CommencezCommencez gratuitement

Comparer des intervalles et des dates-heures

Une tâche courante avec les intervalles consiste à vérifier si un moment précis se trouve à l'intérieur d'un intervalle ou s'il chevauche un autre intervalle.

L'opérateur %within% teste si la date-heure (ou l'intervalle) à gauche se trouve dans l'intervalle à droite. Par exemple, si y2001 est l'intervalle couvrant l'année 2001,

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

Alors ymd("2001-03-30") %within% y2001 retournera TRUE et ymd("2002-03-30") %within% y2001 retournera FALSE.

int_overlaps() effectue un test similaire, mais retournera vrai si deux intervalles se chevauchent, même en partie.

Exercez-vous pour découvrir quels monarques ont vu la comète de Halley autour de 1066.

Cette activité fait partie du cours

Travailler avec les dates et les heures en R

Voir le cours

Instructions de l’exercice

Nous avons placé halleys, un jeu de données décrivant les apparitions de la comète de Halley, dans votre espace de travail.

  • Affichez halleys pour examiner les dates. perihelion_date est la date où la comète est la plus près du Soleil. start_date et end_date sont l'intervalle de dates où la comète est visible depuis la Terre.
  • Créez une nouvelle colonne visible, qui est un intervalle allant de start_date à end_date.
  • Vous travaillerez avec une apparition ; extrayez la 14e ligne de halleys.
  • Filtrez monarchs pour ceux où halleys_1066$perihelion_date est à l'intérieur de reign.
  • Filtrez monarchs pour ceux où halleys_1066$visible chevauche reign.

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

# 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)
Modifier et exécuter le code