Подстановка данных временного ряда в диапазоны - PullRequest
0 голосов
/ 30 июня 2018

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

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

[1] "2018-06-30 21:51:00 NZST" "2018-06-30 23:14:00 NZST" "2018-06-30 23:39:00 NZST"

[4] "2018-06-30 01:10:00 NZST" "2018-06-30 03:32:00 NZST" "2018-06-30 03:40:00 NZST"

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

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 наблюдений, хотя их должно быть несколько сотен.

Любая помощь будет высоко ценится!

1 Ответ

0 голосов
/ 30 июня 2018

Оператор & найдет значение, которое соответствует обоим операторам (и больше, или равно 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, ])
...