У меня есть фрейм данных, который я пытаюсь отфильтровать по двум столбцам: дате и времени.
В настоящее время у меня есть другая функция (get_datetime), которая принимает дату в формате «ГГГГММДД» и время 'ЧЧММ' и возвращает объект POSIXct.
Мое условие фильтра включено, если datetime находится в пределах определенного количества часов (hour_diff), и это то, что у меня сейчас есть:
rows <- rows[abs(as.numeric(difftime(datetime, get_datetime(rows$file_date, rows$file_time), units='hours'))) <= hour_diff,]
get_datetime <- function(date, time) {
#format date and time into POSIXct object
year <- substr(landfall_date, 1, 4)
month <- substr(landfall_date, 5, 6)
day <- substr(landfall_date, 7, 8)
hour <- substr(landfall_time, 1, nchar(landfall_time) - 2)
minute <- substr(landfall_time, nchar(landfall_time) - 1, nchar(landfall_time))
datetime <- as.POSIXct(paste0(year, '-', month, '-', day, ' ', hour, ':', minute, ':00'))
return(datetime)
}
Как передать get_datetime отдельную дату и время, а не все столбцы даты и времени, или есть альтернативный способ для меня правильно отфильтровать строки?
Вот некоторые примеры данных:
![enter image description here](https://i.stack.imgur.com/ZREEQ.png)
structure(list(county = structure(1:6, .Label = c("beaufort", "bertie", "brunswick", "camden", "carteret", "chowan"), class = "factor"), file_date = c(19900724L, 19900724L, 19900725L, 19900725L, 19900726L, 19900726L), file_time = c(300L, 1200L, 1800L, 1800L, 1200L, 1800L)), class = "data.frame", row.names = c(NA, -6L))
datetime <- as.POSIXct('1990-07-25 12:00')
hour_diff <- 12
С указанным выше указанным временем и 12 часами в качестве часа_данных я бы хотел получить средние 4 строки (bert ie , Брансуик, Камден, Картерет).