Compararea intervalelor și a datelor calendaristice
O sarcină frecventă cu intervalele este să verifici dacă un anumit moment se află în interiorul unui interval sau dacă acesta se suprapune cu un alt interval.
Operatorul %within% testează dacă data calendaristică (sau intervalul) din stânga se află în interiorul intervalului din dreapta. De exemplu, dacă y2001 este intervalul care acoperă anul 2001,
y2001 <- ymd("2001-01-01") %--% ymd("2001-12-31")
Atunci ymd("2001-03-30") %within% y2001 va returna TRUE, iar ymd("2002-03-30") %within% y2001 va returna FALSE.
int_overlaps() realizează un test similar, însă returnează TRUE dacă două intervale se suprapun în orice mod.
Exersează pentru a descoperi care monarhi au putut vedea cometa Halley în jurul anului 1066.
Acest exercițiu face parte din cursul
Lucrul cu date și ore în R
Instrucțiuni pentru exercițiu
Am plasat în spațiul tău de lucru setul de date halleys, care descrie aparițiile cometei Halley.
- Afișează
halleyspentru a examina datele.perihelion_dateeste data la care cometa se află cel mai aproape de Soare.start_dateșiend_datereprezintă intervalul de date în care cometa este vizibilă de pe Pământ. - Creează o coloană nouă,
visible, care să fie un interval de lastart_datelaend_date. - Vei lucra cu o singură apariție – extrage al 14-lea rând din
halleys. - Filtrează
monarchspentru a păstra doar monarhii la carehalleys_1066$perihelion_datese află în interiorul intervaluluireign. - Filtrează
monarchspentru a păstra doar monarhii la carehalleys_1066$visiblese suprapune cureign.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
# 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)