Zacznij terazZacznij za darmo

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

Zobacz kurs

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_date to data, w której kometa jest najbliżej Słońca. start_date i end_date wyznaczają zakres dat, w których kometę można obserwować z Ziemi.
  • Utwórz nową kolumnę visible jako przedział czasowy od start_date do end_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órych halleys_1066$perihelion_date mieści się w przedziale reign.
  • Przefiltruj monarchs, wybierając tych monarchów, dla których halleys_1066$visible nachodzi 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)
Edytuj i uruchom kod