Разделение данных временных рядов на диапазоны

Я пытаюсь разделить переменную POSIXct на три временных диапазона: 18:00–21:59, 22:00–01:59 и 2:00–6:00.

голова (активность $ timeect)

[1] 2018-06-30 21:51:00 НЗСТ 2018-06-30 23:14:00 НЗСТ 2018-06-30 23:39:00 НЗСТ

[4] 2018-06-30 01:10:00 НЗСТ 2018-06-30 03:32:00 НЗСТ 2018-06-30 03:40:00 НЗСТ

Я использую смазку пакета, чтобы сделать это. Код выглядит следующим образом:

require(lubridate)
early_activity <- with(Activity, Activity[hour(timect) >= 18 & hour(timect) < 22, ])
mid_activity <- with(Activity, Activity[hour(timect) >= 22 & hour(timect) < 2, ])
late_activity <- with(Activity, Activity[hour(timect) >= 2 & hour(timect) < 6, ])

Проблема, с которой я столкнулся, заключается в том, что диапазоны ранней и поздней активности работают нормально, но временной диапазон средней активности возвращает 0 наблюдений, хотя их должно быть несколько сотен.

Любая помощь приветствуется!


person Fbj9506    schedule 30.06.2018    source источник


Ответы (1)


Оператор & найдет значение, которое соответствует обоим утверждениям (как больше или равно 22, так и меньше 2), в этом случае вы должны использовать |, чтобы он выбирал все, что больше или равно 22 ИЛИ меньше 2.

require(lubridate)
early_activity <- with(Activity, Activity[hour(timect) >= 18 & hour(timect) < 22, ])
mid_activity <- with(Activity, Activity[hour(timect) >= 22 | hour(timect) < 2, ])
late_activity <- with(Activity, Activity[hour(timect) >= 2 & hour(timect) < 6, ])
person Justin    schedule 30.06.2018