У меня есть df в длинном формате с данными о поездках.Df выглядит так:
id from to traveltime Key departuretime arrivaltime (next stop)
1 2 3 00:01:00 301 08:15:00 08:16:00
1 2 3 00:01:00 301 08:30:00 08:31:00
1 2 3 00:01:00 301 08:45:00 08:46:00
2 3 4 00:02:00 301
2 3 4 00:02:00 301
2 3 4 00:02:00 301
1 5 6 00:01:00 302 09:00:00 09:01:00
1 6 7 00:01:00 302 09:01:00 09:02:00
2 7 8 00:01:00 302
Теперь я хочу заполнить пустые ячейки.Время отправления всегда является суммой времени прибытия и времени в пути предыдущей остановки.Итак, ожидаемый результат:
id from to traveltime Key departuretime arrivaltime (next stop)
1 2 3 00:01:00 301 08:15:00 08:16:00
1 2 3 00:01:00 301 08:30:00 08:31:00
1 2 3 00:01:00 301 08:45:00 08:46:00
2 3 4 00:02:00 301 08:16:00 08:18:00
2 3 4 00:02:00 301 08:31:00 08:33:00
2 3 4 00:02:00 301 08:33:00 08:35:00
1 5 6 00:01:00 302 09:00:00 09:01:00
1 6 7 00:01:00 302 09:01:00 09:02:00
2 7 8 00:01:00 302 09:02:00 09:03:00
Я написал код, который работает нормально.Но я должен адаптировать код для каждого ребра в моей df.
data$arrivaltime <- data$departuretime + data$traveltime
data$departuretime[which(data$id =="2" & data$Key =="301")]<-data$arrivaltime[which(data$id == "1" & data$Key =="301")]
Это будет работать, но это ужасно отнимает много времени.Потому что мне нужно адаптировать этот код для каждого края.Теперь я хочу автоматизировать мой код.Так что мне не нужно менять параметры id
и key
вручную.
Полагаю, мне нужно сохранить Keys
и ids
в списке, а затем построить цикл, повторяющийся по df
.
Я новичок в R и не знаю, как построить такой цикл.Поэтому я надеюсь, что у кого-то есть идея на этот счет.Заранее спасибо!