구간과 날짜-시간 비교하기
구간(interval)과 관련해 자주 하는 작업은 특정 시점이 그 구간 안에 있는지, 또는 다른 구간과 겹치는지 확인하는 것입니다.
연산자 %within%는 왼쪽의 날짜-시간(또는 구간)이 오른쪽의 구간 안에 포함되는지를 검사합니다. 예를 들어 y2001이 2001년 전체를 나타내는 구간이라면,
y2001 <- ymd("2001-01-01") %--% ymd("2001-12-31")
이때 ymd("2001-03-30") %within% y2001는 TRUE를 반환하고, ymd("2002-03-30") %within% y2001는 FALSE를 반환합니다.
int_overlaps()는 비슷한 검사를 하지만, 두 구간이 조금이라도 겹치면 true를 반환합니다.
연습하며 1066년 무렵 핼리 혜성을 보았던 군주가 누구인지 알아보세요.
이 연습은 강의의 일부입니다
R에서 날짜와 시간 다루기
연습 안내
작업 공간에 핼리 혜성의 출현을 담은 데이터셋 halleys를 준비해 두었습니다.
- 날짜를 살펴보기 위해
halleys를 출력하세요.perihelion_date는 혜성이 태양에 가장 가까워지는 날짜입니다.start_date와end_date는 지구에서 혜성을 볼 수 있는 기간입니다. start_date부터end_date까지의 구간을 나타내는 새 열visible을 생성하세요.- 한 번의 출현만 다룰 것이므로,
halleys의 14번째 행을 추출하세요. halleys_1066$perihelion_date가reign구간 안에 있는 군주만 남기도록monarchs를 필터링하세요.halleys_1066$visible이reign과 겹치는 군주만 남기도록monarchs를 필터링하세요.
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
# 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)