Нахождение лучшего соответствия на основе наименьшей разницы между строками - PullRequest
0 голосов
/ 27 марта 2019

Я объединил два набора данных, и это не отношение 1 к 1.Теперь я должен определить наилучшее совпадение (между строками) на основе временной задержки.

Я пробовал это в MySQL и в R и не смог ничего найти.

Мой начальныйданные выглядят так:

data <- data.frame("sent_id" = c(1,1,2,2,3,3,3,4,4,4), 
     "recieved_id" = c(100,101,100,101,105,106,107,105,106,107), 
   "delay" = c('00:00:00','15:00:00','-00:14:59','00:00:01','23:00:05','00:01:00',
                   '-18:00:00','15:00:00','23:00:00','00:30:10'))

И я хочу закончить примерно так:

data2 <- data.frame("sent_id" = c(1,1,2,2,3,3,3,4,4,4), 
     "recieved_id" = c(100,101,100,101,105,106,107,105,106,107), 
     "delay" = c('00:00:00','15:00:00','-00:14:59','00:00:01','23:00:05','00:01:00',
    '-18:00:00','15:00:00','23:00:00','00:30:10'), 
'best_match' = c(TRUE, FALSE, FALSE, TRUE, FALSE, TRUE, FALSE, FALSE, FALSE, TRUE))

1 Ответ

0 голосов
/ 28 марта 2019

Избавился от отрицательных знаков в задержке и сделал следующее.

test_data <- data.frame("sent_id" = c(1,1,2,2,3,3,3,4,4,4), "recieved_id" = c(100,101,100,101,105,106,107,105,106,107), "delay" = c('00:00:00','15:00:00','00:14:59','00:00:01','23:00:05','00:01:00','18:00:00','15:00:00','23:00:00','00:30:10'))

received_id <-unique(test_data$recieved_id) sent_id_2 <-unique(test_data$sent_id)

library(dplyr)

new.frame <- data.frame("sent_id" = NA, "recieved_id" = NA, "delay" = NA)

for(i in 1:length(test_data$sent_id)){ new.frame[i,] <- arrange(test_data %>% filter(sent_id == sent_id_2[i]), delay)[1,] }

Немного подчищено для фактического кода.Но это приведет вас туда.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...