У меня есть набор данных, который включает информацию о школах, которые учащийся посещал в течение c академического года, а также даты их поступления и выхода из каждой школы. Хотя большинство учеников посещают только одну школу, есть и другие, которые посещали до четырех разных школ. Я хотел бы убедиться, что ни один из диапазонов дат не пересекается. Ниже приведен пример данных, которые у меня есть (даты структурированы как даты):
|---------------------|------------------|---------------------|------------------|
| entry_date_1 | withdrawal_date_1| entry_date_2 | withdrawal_date_2|
|---------------------|------------------|---------------------|------------------|
| 2017-11-09 | 2018-05-24 | NA | NA |
|---------------------|------------------|---------------------|------------------|
| 2017-08-14 | 2017-12-15 | 2017-12-16 | 2018-05-24 |
|---------------------|------------------|---------------------|------------------|
| 2017-08-14 | 2018-06-01 | 2018-01-16 | 2018-03-20 |
|---------------------|------------------|---------------------|------------------|
| 2018-01-24 | 2018-02-25 | 2018-04-03 | 2018-05-24 |
|---------------------|------------------|---------------------|------------------|
В идеале мне хотелось бы иметь столбец, который дает мне такой логический оператор:
|---------------------|------------------|---------------------|------------------|------------------|
| entry_date_1 | withdrawal_date_1| entry_date_2 | withdrawal_date_2| overlap? |
|---------------------|------------------|---------------------|------------------|------------------|
| 2017-11-09 | 2018-05-24 | NA | NA | NA |
|---------------------|------------------|---------------------|------------------|------------------|
| 2017-08-14 | 2017-12-15 | 2017-12-16 | 2018-05-24 | FALSE |
|---------------------|------------------|---------------------|------------------|------------------|
| 2017-08-14 | 2018-06-01 | 2018-01-16 | 2018-03-20 | TRUE |
|---------------------|------------------|---------------------|------------------|------------------|
| 2018-01-24 | 2018-02-25 | 2018-04-03 | 2018-05-24 | FALSE |
|---------------------|------------------|---------------------|------------------|------------------|
Я пробовал сделать это с помощью функции% overlaps% в пакете DescTools, но она не дает логического оператора для любого столбца - только NA. Если бы кто-нибудь мог помочь мне устранить проблему, это было бы здорово. И любые другие предложения также будут полезны. Мне удобнее всего использовать tidyverse и base R, а менее комфортно - data.table.
Ниже приведен фрагмент данных для воспроизводимого примера:
my_data <- data.frame("student_id" = 1:6,
"entry_date_1" = as.Date(c("2017-11-09","2017-08-14","2017-08-14","2018-01-24","2017-10-04","2017-08-14")),
"withdrawal_date_1" = as.Date(c("2018-05-24","2017-12-15","2018-06-01","2018-02-25","2017-11-11","2018-05-24")),
"entry_date_2" = as.Date(c(NA,"2017-12-16","2018-01-16","2018-04-03","2017-12-12",NA)),
"withdrawal_date_2" = as.Date(c(NA,"2018-05-24","2018-03-20","2018-05-24","2018-05-24",NA)))
Заранее спасибо за любые помогите!