Определение количества активных инцидентов за неделю с даты начала и окончания
У меня есть фрейм данных (df), который содержит информацию о прибытии и закрытой дате инцидентов, в формате:
ID ArrivalDate ClosedDate
1 2015-12-01 2015-12-08
2 2015-12-01 2015-12-18
3 2015-12-02 2015-12-11
4 2015-12-02 2015-12-03
. . .
. . .
300 2016-05-03 2016-05-13
Я хочу узнать, сколько было активных (которые прибыли, но не закрылись) в неделю, начиная с 2015-12-01 по 2016-05-31. то есть. Вывод должен выглядеть примерно так (это не правильные выходные значения, а то, как они должны выглядеть).
Номер недели StartDate EndDate Активно
1 2015-12-01 2015-12-08 4
2 2015-12-08 2015-12-15 15
3 2015-12-15 2015-12-22 20
. . . .
. . . .
26 2016-05-24 2016-05-31 3
Я использовал два цикла for, сравнивая каждый элемент в df с начальной и конечной датой каждой недели. Кроме того, я использовал фрейм данных (Неделя), в котором уже есть номер недели, дата начала и окончания для каждой недели и номер, который активен (который в начале равен нулю)
Это код, который я использовал:
for(i in 1:nrow(df)){
for(j in 1:nrow(Week)){
if(df$ArrivalDate[i]>=Week$StartDate[j]&df$ArrivalDate[i]<Week$EndDate[j])
Week$Active[j]<-Week$Active[j]+1
if(df$ClosedDate[i]>=Week$EndDate[j]){
k<-j+1
repeat{
Week$Active[k]<-Week$Active[k]+1
if(df$ClosedDate[i]>=Week$EndDate[k])break
k<-k+1
}
}
if(df$ClosedDate[i]<Week$EndDate[j])break
}
}
Я продолжаю получать сообщения об ошибках, если такие утверждения, как "аргумент имеет нулевую длину" или "отсутствует значение, где требуются значения ИСТИНА / ЛОЖЬ", заставляют меня верить, что значения NA каким-то образом создаются. Я не знаю, является ли это ошибкой в моей логике или некоторой синтаксической проблемой, которую я пропускаю.
Я знаю, что это не очень аккуратный способ решения проблемы, поэтому будет полезна любая другая более простая или лучшая логика.
заранее спасибо