У меня есть список раз, и я хочу поместить их в ведра.
то есть «9:00 PM» входит в «7:00 PM - 12:00 AM» корзину
Функция выглядит следующим образом:
bucket.start.time <- function(x) {
if (strptime(x, format = "%I:%M %p") >= strptime("7:00", format = "%R") &&
strptime(x, format = "%I:%M %p") < strptime("12:00", format = "%R")) {
timebucket <- "7:00 AM - 11:59 AM"
}
if (strptime(x, format = "%I:%M %p") >= strptime("12:00", format = "%R") &&
strptime(x, format = "%I:%M %p") <= strptime("16:30", format = "%R")) {
timebucket <- "12:00 PM - 4:30 PM"
}
if (strptime(x, format = "%I:%M %p") > strptime("16:30", format = "%R") &&
strptime(x, format = "%I:%M %p") < strptime("19:00", format = "%R")) {
timebucket <- "4:31 PM - 6:59 PM"
}
if (strptime(x, format = "%I:%M %p") >= strptime("19:00", format = "%R") &&
strptime(x, format = "%I:%M %p") < strptime("24:00", format = "%R")) {
timebucket <- "7:00 PM - 12:00 AM"
}
return(timebucket)
}
Затем я использовал mutated для создания второго столбца:
mutate(Appointments, Time.Bucket = bucket.start.time(Start.Time))
Что я обнаружил, так это то, что, поскольку в первой строке было начальное время «12:30», функция заполняла столбец Time.Bucket исключительно «12:00 - 16:30». Как я могу изменить, чтобы применить свою функцию к каждой строке индивидуально, вместо того, чтобы применить ее один раз к первой строке и скопировать результат для остальных?