цикл для нескольких операторов - PullRequest
0 голосов
/ 17 апреля 2019

У меня есть 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 и не знаю, как построить такой цикл.Поэтому я надеюсь, что у кого-то есть идея на этот счет.Заранее спасибо!

...