Porównywanie przedziałów czasowych i dat
Często spotykanym zadaniem przy pracy z przedziałami czasowymi jest sprawdzenie, czy dany moment mieści się w przedziale albo czy dwa przedziały na siebie nachodzą.
Operator %within% sprawdza, czy data (lub przedział) po lewej stronie znajduje się wewnątrz przedziału po prawej stronie. Na przykład, jeśli y2001 to przedział obejmujący rok 2001,
y2001 <- ymd("2001-01-01") %--% ymd("2001-12-31")
to wyrażenie ymd("2001-03-30") %within% y2001 zwróci TRUE, a ymd("2002-03-30") %within% y2001 zwróci FALSE.
int_overlaps() działa podobnie, ale zwraca TRUE, gdy dwa przedziały w ogóle się nakładają.
Wykorzystaj te narzędzia, aby dowiedzieć się, którzy monarchowie mogli zobaczyć kometę Halleya około 1066 roku.
To ćwiczenie jest częścią kursu
Praca z datami i czasem w R
Instrukcje do ćwiczenia
W twoim środowisku pracy dostępny jest zbiór danych halleys opisujący kolejne pojawienia się komety Halleya.
- Wyświetl
halleys, aby zapoznać się z danymi.perihelion_dateto data, w której kometa jest najbliżej Słońca.start_dateiend_datewyznaczają zakres dat, w których kometę można obserwować z Ziemi. - Utwórz nową kolumnę
visiblejako przedział czasowy odstart_datedoend_date. - Pracować będziesz z jednym pojawieniem się komety – wyodrębnij 14. wiersz ze zbioru
halleys. - Przefiltruj
monarchs, wybierając tych monarchów, dla którychhalleys_1066$perihelion_datemieści się w przedzialereign. - Przefiltruj
monarchs, wybierając tych monarchów, dla którychhalleys_1066$visiblenachodzi na przedziałreign.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# 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)