Я использую R для извлечения данных от историка процесса с использованием SQL. У меня есть два фрейма данных: один из сетевых весов (NetWt
) с отметками времени (100 строк) и еще один из заданных значений веса (SetPt
) с отметками времени (6 строк). Уставка меняется нечасто, но новый вес мешка записывается каждые 30 секунд. Мне нужно вычесть два таких, что я получаю результирующий фрейм данных NetWt - SetPt
для каждой отметки времени в NetWt
. В моем последнем наборе данных самая последняя отметка времени SetPt
раньше, чем первая отметка NetWt
. Мне нужна функция, которая пройдет через каждую строку в NetWt
, возьмет временную метку, найдите ближайшую временную метку до этого времени в фрейме SetPt
, верните последние SetPt
и выведите разницу (NetWt-SetPt
).Как я могу вычесть 2 фрейма данных различной длины, выполнив поиск ближайшей метки времени в R?
Я исследовал merge
, rbind
, cbind
, и я не могу найти функцию поиска в обратном направлении для последнего SetPt
значения и сливаться, что с NetWt
, так что я могу вычесть их построить разницу во времени. Кто-нибудь может помочь?
данных:
SetPtLines <- "Value,DateTime
51.35,2014-02-10 08:10:49
53.30,2014-02-10 07:52:37
53.10,2014-02-10 07:52:19
51.70,2014-02-10 07:50:26
51.35,2014-02-09 19:25:21
51.40,2014-02-09 19:13:11
51.50,2014-02-09 18:24:53
51.45,2014-02-09 16:10:38
51.40,2014-02-09 15:54:42"
SetPt <- read.csv(text=SetPtLines, header=TRUE)
NetWtLines <- "DateTime,Value
2014-02-11 12:51:50,50.90735
2014-02-11 12:52:24,50.22308
2014-02-11 12:52:55,50.88604
2014-02-11 12:53:27,50.69514
2014-02-11 12:53:58,51.38968
2014-02-11 12:54:29,50.96672"
NetWt <- read.csv(text=NetWtLines, header=TRUE)
Есть 100 строк в NetWt
.
Это невозможно понять без данных примера. См. Здесь для подсказок, как помочь нам помочь вам: http://stackoverflow.com/a/5963610/1527403 –
Посмотрите на 'roll =" ближайший аргумент '' в 'data.table' –