Porovnávání intervalů a datumů
Při práci s intervaly se často potřebuješ zeptat, jestli daný čas leží uvnitř intervalu, nebo jestli se dva intervaly překrývají.
Operátor %within% testuje, zda datetime (nebo interval) na levé straně leží uvnitř intervalu na pravé straně. Například pokud y2001 je interval pokrývající rok 2001,
y2001 <- ymd("2001-01-01") %--% ymd("2001-12-31")
pak ymd("2001-03-30") %within% y2001 vrátí TRUE a ymd("2002-03-30") %within% y2001 vrátí FALSE.
int_overlaps() provádí podobný test, ale vrátí TRUE, pokud se dva intervaly jakkoliv překrývají.
Zkus zjistit, kteří panovníci mohli vidět Halleyovu kometu kolem roku 1066.
Toto cvičení je součástí kurzu
Práce s daty a časy v R
Pokyny k cvičení
V tvém pracovním prostředí je připravena datová sada halleys popisující výskyty Halleyovy komety.
- Vypiš
halleysa prohlédni si data.perihelion_dateje datum, kdy je kometa nejblíže Slunci.start_dateaend_datejsou krajní data, ve kterých je kometa viditelná ze Země. - Vytvoř nový sloupec
visiblejako interval odstart_datedoend_date. - Budeš pracovat s jedním výskytem – extrahuj 14. řádek z
halleys. - Filtruj
monarchstak, abyhalleys_1066$perihelion_dateleželo uvnitřreign. - Filtruj
monarchstak, aby sehalleys_1066$visiblepřekrývalo sreign.
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
# 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)