我的数据中有一个时间列,如下所示:
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")
答案 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