У меня есть набор данных.Каждый идентификатор имеет последовательность из 0 и 1, столбец даты и другой столбец num.day.Я хотел бы найти начало и конец самой длинной 1 последовательности для каждого идентификатора.Затем вычислите разрыв между датами от начала до конца.После этого добавьте соответствующий num.day конечной даты.
Например, следующий идентификатор таблицы = 1, самая длинная последовательность начинается с даты 4 (одна запись выше) и заканчивается 9. Таким образом, разрыв составляет 5.Добавьте число num.day для даты окончания должно быть day_gap = (9-4) +3 = 8. Если один идентификатор имеет несколько последовательностей, имеющих одинаковую самую длинную длину, то возьмите max day_gap из этих последовательностей для этого идентификатора.

Вот код для создания фиктивной таблицы
library(data.table)
ID=c(rep(1,10),rep(2,10),rep(3,10))
set.seed(1)
fill=sample(c(0,1),length(ID),replace=TRUE)
dat=data.table(ID,fill)[,date:=seq(.N),by="ID"][date==1,fill:=0]
set.seed(1)
dat$num.days=sample(1:10,nrow(dat),replace=TRUE)