У меня есть два кадра данных:Поиск ближайшей даты в кадре данных
purchases:
time quantity
1: 2013-07-31 03:42:02 30
2: 2013-07-31 03:59:32 30
3: 2013-07-31 04:02:22 28
....
history:
time price
1: 2013-07-31 04:26:46 10
2: 2013-07-31 07:11:01 10
3: 2013-07-31 08:16:36 5
4: 2013-07-31 08:40:03 8
5: 2013-07-31 08:47:56 7
....
Что я хочу сделать: для каждой строки в «покупке», посмотрите в «историях» строке с ближайшей датой (если возможно меньше, что один в «покупке»)
Я пытался сделать что-то вроде этого
history <- as.vector(history$time)
для каждой строки в закупках:
current.price <- purchases[i,]$time
which(history-current.price)==min(history-current.price)
Это полезно, если значения являются числовыми, но я не знаю, как обрабатывать тезисы даты класса POSIXct.
EDIT: добавлена воспроизводимые данные
#Reproducible dummy data
p <- read.table(text="
t,quantity
2013-07-31 03:42:02,30
2013-07-31 03:59:32,30
2013-07-31 04:02:22,28",header=TRUE,sep=",")
h <- read.table(text="
t,price
2013-07-31 04:26:46,10
2013-07-31 07:11:01,10
2013-07-31 08:16:36,5
2013-07-31 08:40:03,8
2013-07-31 08:47:56,7",header=TRUE,sep=",")
#Convert to POSIXct
p$t <- as.POSIXct(strptime(p$t, "%Y-%m-%d %H:%M:%S"))
h$t <- as.POSIXct(strptime(h$t, "%Y-%m-%d %H:%M:%S"))
Попробуйте [difftime] (http://stat.ethz.ch/R-manual/R-devel/library/base/html/difftime.html)? – zx8754
Сделайте скользящее соединение с data.tables? – Roland
Добавлены воспроизводимые данные на случай, если кто-то захочет пойти ... – zx8754