У меня есть файл ascii, читаемый как фрейм данных, который выглядит следующим образом:
points <- data.frame(c(5.177, 6.57, 20.97, -1.18),
c(52.1, 46.49, 52.4, 60.14),
c("08:30:12", "09:45:20", "11:33:22", "14:12:43")
)
names(points) <- c('lon', 'lat', 'Time')
Реальный набор данных имеет около 150000 строк, а столбец времени - это класс «символ».
Теперь, что я хочу сделать, это отфильтровать на основе периода времени вокруг известного наблюдения. Допустим, это наблюдение произошло в 11:00:00 (время указано в UT C), и я хочу знать, какие измерения попадают в 3-часовой период этого известного наблюдения.
Поэтому мне нужно отфильтровать значения, которые не попадают в течение 1,5 часов + - от 11:00:00.
В конце я хочу выбрать ближайшее наблюдение в космосе, которое уже работает. Но я не могу понять, как выбрать, исходя из этого ограничения по времени. Окончательная функция выглядит примерно так:
nearestPixel <- function(matrix, station, time) {
# filter based on time (3 hours around time of measurement)
## TODO ##
# select just lat/lon from both datasets
surfset <- SpatialPoints(surfmatrix[, 1:2])
stationset <- SpatialPoints(station[, 2:3])
# calculate closest point in distance
nearest <- apply(gDistance(surfset, stationset, byid=TRUE), 1, which.min)
}