我正在尝试将POSIXct变量分为三个时间范围18:00-21:59、22:00-01:59和2:00-6:00。
head(Activity $ 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个观测值,尽管应该有几百个。
任何帮助将不胜感激!
答案 0 :(得分:2)
&
运算符将找到与两个语句都匹配的值(均大于或等于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, ])