Я пытаюсь написать сценарий R, который указывает, какие часы / минуты дня "попадают" в определенное время начала / окончания.
Так, например, класс с временем начала / окончания 8 - 8:30 утра "попадет" в 8:00, 8:05, 8:10 ... 8:30. И не попадет в другие времена.
Конечной целью будет кадр данных с первым столбцом в качестве времени начала, вторым столбцом, временем окончания и третьим столбцом - отдельным временем, которое «попадает» в время начала / окончания. E.g.:
время начала и окончания
8:00 8:30 8:00
8:00 8:30 8:05
8:00 8:30 8: 10
Вот мой текущий сценарий:
library("tidyverse")
#create initial matrix
vector1 <- c(1:24) #listing of hours
vector2 <- seq.int(.05,.60,.05) #listing of every 5 minutes
possible_hrs <- data.frame(outer(vector1,vector2,'+'))
#matrix of all possible hours/minutes
#pull in start/end time possibilities
start <-c(5,5.30)
end <-c(8,9.55)
class_time<-data.frame(start,end)
times<-function(class_time,possible_hrs){
#extract the values that match; where possible hours "fall into" start/end times
match = which(possible_hrs >= class_time$start & possible_hrs <= class_time$end, arr.ind=TRUE)
values = data.frame(sort(possible_hrs[match]))
starts <- class_time$start
ends <- class_time$end
times <- values
results<-data.frame(starts,ends,times)
}
results2 <- times(class_time,possible_hrs)
results2
Но что-то не так с функцией which (), так как я получаю значения, которые не должны "попадать" в время начала / окончания соответственно.
Так что время 8:05 не должно попадать в блок времени 5:00 - 8:00. И также я не получаю все результаты во втором блоке времени ... Я не получаю время 9:00, которое должно попасть в блок времени 8:00 - 9:55.
Я новичок в этом, поэтому любые / все предложения помогут.
Спасибо!
Джонатан