У меня есть df с идентификатором поездки, идентификатором остановки, отметкой времени и скоростью.
trip_id stop_id speed timestamp
1 1 1 5 1
2 1 1 0 2
3 1 1 0 3
4 1 1 5 4
5 1 2 2 101
6 1 2 2 102
7 1 2 2 103
8 1 2 2 104
9 1 3 4 201
10 1 3 0 202
Я сохранил первую и последнюю строки, где скорость равна нулю, для групп, где trip_id и stop_id одинаковы.
df_departure_z <- sqldf("SELECT trip_id, stop_id, MAX(timestamp) FROM df WHERE speed = 0 GROUP BY trip_id,stop_id")
df_arrival_z <- sqldf("SELECT trip_id, stop_id, MIN(timestamp) FROM df WHERE speed = 0 GROUP BY trip_id,stop_id")
Что дало результаты:
df_departure_z:
trip_id stop_id MAX(timestamp)
1 1 1 3
2 1 3 203
df_arrival_z:
trip_id stop_id MIN(timestamp)
1 1 1 2
2 1 3 202
Моя проблема: есть одна остановка (остановка 2), где скорость никогда не равна нулю, и поэтому я хочу найти способ сохранить одну временную метку для остановок, где скорость никогда не равна нулю. Я пробовал это:
df_arr_dep <- sqldf("SELECT trip_id, stop_id, MIN(timestamp) FROM df GROUP BY trip_id, stop_id EXCEPT SELECT trip_id, stop_id FROM df_arrival_z ")
Но это дает мне ошибку, так как я пытаюсь сохранить три столбца на основе значений в двух столбцах в другом df. По сути, я хочу снова просмотреть свой df и найти те комбинации trip_id и stop_id, которых нет в df_departure_z или df_arrival_z. Если я попытаюсь использовать SELECT *, я получу все несохраненные строки, что также неверно.
anti_join
отdplyr
- person akrun   schedule 14.02.2019df_departure_z
правильно? Я вижу только одну запись скорости 0 дляtrip_id
2 иstop_id
3 сtimestamp
202. - person zack   schedule 14.02.2019