Мы можем вычесть 1 из which.min
. Если «Данные» не упорядочены, нам может понадобиться сначала заказать их
t1 <- t[order(t$as.Date(Data)),]
i1 <- with(t1, which.min(abs(as.Date(Time) - as.Date(Data)))-1)
t1[i1, , drop = FALSE]
# Data prezzi
#3 2013-09-08 3
Если мы используем dplyr
library(dplyr)
t %>%
mutate(Data = as.Date(Data)) %>%
arrange(Data) %>%
slice(which.min(abs(as.Date(Time) - Data)) - 1)
# Data prezzi
#1 2013-09-08 3
Обновление
Если OP рассматривает не на основе предыдущей строки, а только строки, которые отличаются от минимального отличия от «Time», тогда используйте findInterval
Time <- "2013-09-09"
t[findInterval(as.Date(Time), as.Date(t$Data)),]
# Data prezzi
#3 2013-09-08 3