将时间序列数据细分为范围

时间:2018-06-30 00:32:05

标签: r lubridate posixct

我正在尝试将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个观测值,尽管应该有几百个。

任何帮助将不胜感激!

1 个答案:

答案 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, ])