У меня есть фрейм данных df , который содержит различные транзакции. Каждая транзакция имеет дату начала и дату окончания. Две переменные для этого: start_time и end_time . Они относятся к классу POSIXct . Пример того, как они выглядят: «2018-05-23 23:40:00» «2018-06-24 00:10:00». В df содержится около 13000 транзакций, и я хочу извлечь все транзакции, которые содержат хотя бы бит указанного временного интервала, если не все. Временной интервал или диапазон составляет 20:00:00 - 8:00:00, поэтому в основном 8 вечера = <интервал <8:00 </p>
Я пытаюсь использовать dplyr и функцию filter()
чтобы сделать это, однако моя проблема в том, что я не уверен, как написать логическое выражение. Пока что я написал в коде следующее:
df %>% filter(hour(start_time) >= 20 | hour(start_time) < 8 |hour(end_time) >= 20 | hour(end_time) < 8 )
Я думал, может быть, это получит все транзакции, которые содержат хотя бы часть этого интервала, но потом я подумал о транзакциях, которые может начинаться и заканчиваться за пределами этого интервала, но их продолжительность настолько велика, что содержит эти часы из интервала. Я подумал, может быть, добавить | duration > 12
, потому что любое время запуска, которое длится более 12 часов, будет содержать часть этого временного интервала. Тем не менее, я чувствую, что этот код неоправданно длинен и должен быть более простой способ, но я не знаю как.