Поднастройване на данни от времеви редове в диапазони

Опитвам се да разделя променлива на 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 наблюдения, въпреки че трябва да има няколкостотин.

Всяка помощ ще бъде много ценена!


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