У меня есть набор данных с именем loc_prime2, который выглядит следующим образом:
Document.Name locale Arrival Leg.Number no_legs
VCH028735 DENVER_COLORADO 12/2/2018 1 2
VCH028735 _NONE 12/7/2018 2 2
VCH028776 HARLINGEN_TEXAS 12/2/2018 1 3
VCH028776 LUBBOCK_TEXAS 12/3/2018 2 3
VCH028776 NONE 12/4/2018 3 3
VCH030440 MEMPHIS_TENNESSEE 5/12/2019 1 6
VCH030440 NASHVILLE_TENNESSEE 5/13/2019 2 6
VCH030440 KNOXVILLE_TENNESSEE 5/14/2019 3 6
VCH030440 CHATTANOOGA_TENNESSEE 5/15/2019 4 6
VCH030440 NASHVILLE_TENNESSEE 5/16/2019 5 6
VCH030440 Kennesaw, 5/18/2019 6 6
VCH031580 EUGENE_OREGON 7/8/2019 1 8
VCH031580 NEWPORT_OREGON 7/9/2019 2 8
VCH031580 CORVALLIS_OREGON 7/10/2019 3 8
VCH031580 EUGENE_OREGON 7/11/2019 4 8
VCH031580 EUREKA_CALIFORNIA 7/12/2019 5 8
VCH031580 REDDING_CALIFORNIA 7/15/2019 6 8
VCH031580 SACRAMENTO_CALIFORNIA 7/16/2019 7 8
VCH031580 _NONE 7/17/2019 8 8
Я хочу добавить новый столбец, который содержит дату прибытия, следующую за текущей датой прибытия. Это должно быть сделано разное количество раз в зависимости от no_legs в поездке. Например, первый Document.Name был в Денвере 12/2; следующее местоположение, связанное с Document.Name - _None, означающее, что после Денвера не было пункта назначения. Таким образом, строка для VCH028735 должна быть сокращена до:
Document.Name locale Arrival End
VCH028735 DENVER_COLORADO 12/2/2018 12/7/2018
Обратите внимание, что в некоторых поездках более двух ветвей. Есть поездки с целых 8 ногами. Например, VCH031580 необходимо сжать до этого:
Document.Name locale Arrival End
VCH031580 EUGENE_OREGON 7/8/2019 7/9/2019
VCH031580 NEWPORT_OREGON 7/9/2019 7/10/2019
VCH031580 CORVALLIS_OREGON 7/10/2019 7/11/2019
VCH031580 EUGENE_OREGON 7/11/2019 7/12/2019
VCH031580 EUREKA_CALIFORNIA 7/12/2019 7/15/2019
VCH031580 REDDING_CALIFORNIA 7/15/2019 7/16/2019
VCH031580 SACRAMENTO_CALIFORNIA 7/16/2019 7/17/2019
У меня есть это для случая, когда no_legs равен 2:
test <- as.data.frame(loc_prime2 %>% group_by(Document.Name) %>% mutate(
end1 = as.Date(ifelse(Leg.Number == 1 & no_legs == 2, lead(Arrival), 0),
origin = '1970-01-01')
# end mutate
)
)
Но для работы с различными значениями no_legs Я думаю, мне понадобится все, что угодно. Я уверен, что есть очень простой способ сделать то, что я хочу - я просто не вижу этого. Мысли?
Заранее спасибо.