У меня есть фрейм данных (с N = 16), содержащий идентификатор (символ), w_from (дата) и w_to (дата). Каждая запись представляет задачу.
Вот данные в R.
ID <- c(1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2)
w_from <- c("2010-01-01","2010-01-05","2010-01-29","2010-01-29",
"2010-03-01","2010-03-15","2010-07-15","2010-09-10",
"2010-11-01","2010-11-30","2010-12-15","2010-12-31",
"2011-02-01","2012-04-01","2011-07-01","2011-07-01")
w_to <- c("2010-01-31","2010-01-15", "2010-02-13","2010-02-28",
"2010-03-16","2010-03-16","2010-08-14","2010-10-10",
"2010-12-01","2010-12-30","2010-12-20","2011-02-19",
"2011-03-23","2012-06-30","2011-07-31","2011-07-06")
df <- data.frame(ID, w_from, w_to)
df$w_from <- as.Date(df$w_from)
df$w_to <- as.Date(df$w_to)
Мне нужно сгенерировать номер группы по идентификатору для записей, чьи интервалы времени перекрываются. Например, и в общих чертах, если запись № 1 перекрывается с записью № 2, а запись № 2 перекрывается с записью № 3, то запись № 1, запись № 2 и запись № 3 перекрываются.
Кроме того, если запись № 1 перекрывается с записью № 2 и записью № 3, но запись № 2 не перекрывается с записью № 3, то запись № 1, запись № 2, запись № 3 все перекрываются.
В приведенном выше примере и для ID = 1 первые четыре записи перекрываются.
Вот окончательный результат:
Также, если это можно сделать с помощью dplyr, это было бы здорово!