So sánh intervals và datetimes
Một tác vụ thường gặp với interval là kiểm tra xem một thời điểm có nằm trong interval hay không, hoặc hai interval có chồng lấn nhau không.
Toán tử %within% kiểm tra xem datetime (hoặc interval) ở phía bên trái có nằm trong interval ở phía bên phải hay không. Ví dụ, nếu y2001 là interval bao trùm năm 2001,
y2001 <- ymd("2001-01-01") %--% ymd("2001-12-31")
Thì ymd("2001-03-30") %within% y2001 sẽ trả về TRUE và ymd("2002-03-30") %within% y2001 sẽ trả về FALSE.
int_overlaps() thực hiện kiểm tra tương tự, nhưng sẽ trả về true nếu hai interval có bất kỳ phần chồng lấn nào.
Luyện tập để tìm xem những vị vua nào đã nhìn thấy sao chổi Halley vào khoảng năm 1066.
Bài tập này là một phần của khóa học
Làm việc với Ngày và Giờ trong R
Hướng dẫn bài tập
Chúng tôi đã đặt halleys, một tập dữ liệu mô tả các lần xuất hiện của sao chổi Halley, vào workspace của bạn.
- In
halleysđể xem dữ liệu.perihelion_datelà ngày sao chổi ở gần Mặt Trời nhất.start_datevàend_datelà khoảng thời gian sao chổi có thể nhìn thấy từ Trái Đất. - Tạo cột mới
visible, là một interval từstart_dateđếnend_date. - Bạn sẽ làm việc với một lần xuất hiện, trích xuất hàng thứ 14 của
halleys. - Lọc
monarchsđể giữ những dòng màhalleys_1066$perihelion_datenằm trongreign. - Lọc
monarchsđể giữ những dòng màhalleys_1066$visiblechồng lấn vớireign.
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
# 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)