Я хочу создать фрейм данных с фиктивной переменной, которая показывает 1, когда время инцидента находится в диапазоне времени (часы). Вот что я сделал:
library(chron)
library(stringr)
var <- c("A", "B", "C", "D", "E", "F")
times <- c("22:40:20", "10:36:29", "09:23:27", "12:33:27", "12:22:22", "00:17:44")
df <- data.frame(var, times)
hours <- print(paste(stringr::str_pad(c(0:23), 2, side="left", pad=0),
"00", "00", sep=":"))
hours <- chron(times=hours)
df$times <- chron(times=df$times)
df$zero <- 0
df$zero[df$times>=hours[1] & df$times<hours[2]] <- 1
df$one <- 0
df$one[(df$times>=hours[2] & df$times<hours[3])] <- 1
и т. Д. И вскоре до:
df$twentytree <- 0
df$twentytree[(df$times>=hours[24] ] <- 1
var times zero one
1 A 22:40:20 0 0
2 B 10:36:29 0 0
3 C 09:23:27 1 0 # in column zero is one because the time event is between 00:00:00 and 01:00:00
4 D 12:33:27 0 0
5 E 12:22:22 0 0
6 F 00:17:44 1 0
но я вполне уверен, что это должен быть какой-то другой автоматизированный способ
Идеи?
Спасибо за продвинутый.
p.d: я пробовал таким образом, но я не могу этого достичь.
df <- cbind(df, sapply(hours, function(x) as.integer(c4$times >=x & c4$times<x) ) )