R中日间时间的分类用于预测分析

时间:2016-07-08 22:35:07

标签: r datetime predict

我的数据中有一个时间列,如下所示:

   9:41:12 AM  7:13:00 PM  4:15:54 PM  1:40:49 PM  12:52:37 PM 3:18:11 PM  5:00:02 PM  7:12:25 PM  5:34:47 PM  9:03:39 AM 
 1:00:01 PM 1:00:16 PM 1:00:22 PM 1:00:41 PM 1:00:47 PM 1:00:53 PM 1:01:45 PM 1:01:54 PM 1:02:40 PM

我正在尝试在预测分析中为多项回归模型创建目标列,以便我可以将时间范围放在不同的桶中。

我的尝试的一个例子如下:

ifelse(df$time > 10:00 AM & df$time < 1:00 PM, 1,
 ifelse(df$time >= 1:00 PM & df$time < 10:00 PM, 2, NA))

它给出了意外符号的错误。

我看了R: Seperating out a mixed data column, date above multiple times,但它没有解决我的问题。

请帮忙。

编辑:

dput示例:

structure(c(2630L, 1973L, 1560L, 183L, 1100L, 1419L, 1674L, 
1971L), .Label = c("1:00:01 PM", "1:00:16 PM", "1:00:22 PM", "1:00:41 PM",
"1:00:47 PM", "1:00:53 PM", "1:01:45 PM", "1:01:54 PM"), class = "factor")

1 个答案:

答案 0 :(得分:1)

这是您在数据和比较中输入时间的方式。

日期需要采用正确的格式(您省略了秒数)和比较中的引用字符串。

此外,您需要确保它存储在适当的类中而不是字符。

a <- c("9:41:12 AM", "9:41:12 PM")
class(a) # Can't use character data the way you want to

a <- data.frame(a=a,flag=NA) # Flag will indicate AM / PM
a$flag <- grepl(" AM",a$a)

require(lubridate)     # lubridate makes working with time fun and easy
a$a <- hms(a$a)        # give it a proper class
a$a[a$flag == F] <- a$a[a$flag == F] + hms("12:00:00") # add 12 hours if it's PM
a
   a           flag
1  9H 41M 12S  TRUE
2 21H 41M 12S FALSE
# Now let's do a comparison:
hms("12:00:00") > a$a #works
  

[1] TRUE FALSE