Как уже упоминали другие, важен пример набора данных.
Не зная ваших данных, я рекомендую добавить сам день, чтобы избежать проблем при смене дня (полуночи).
Вы можете изменить следующий код в соответствии с вашими потребностями. Обратите внимание, что некоторые строки кода вставлены только для тестового примера - посмотрите, что произойдет.
# --- Create some data ---
dat <- read.table(textConnection("date time observation
2019-11-01 15:01:32 100
2019-11-01 18:26:31 115
2019-11-01 10:17:38 51
2019-11-01 20:23:21 278"), header=TRUE)
dat
# --- set certain time ---
CertainTime <- "2019-11-01 09:58:13"
SmallestValue <- 86400 # seconds of one day
for(i in 1:4) {
ObservationTime <- paste(dat[i,1],dat[i,2])
diff <- difftime(CertainTime, ObservationTime, units = "secs")
print("-------------------")
print(CertainTime)
print(ObservationTime, max.levels=0)
print(paste("Index", i, "time diff ", diff, "to certain time."))
if(diff*(-1) < SmallestValue){
SmallestValue <- diff*(-1)
print("smaller value found")
print(SmallestValue)
SmallestValueindex <- i
}
}
print(SmallestValueindex)
print(SmallestValue)
# print oberservation data
print (paste ("Date:", dat[SmallestValueindex,1], "Time:", dat[SmallestValueindex,2], "Observation:", dat[SmallestValueindex,3]))
Вывод последней строки кода:
[1] "Date: 2019-11-01 Time: 10:17:38 Observation: 51"