Rolling join su data.table con chiavi duplicate

Sto cercando di capire i rolling joins in data.table . I dati per riprodurre questo è dato alla fine.

Dato un data.table delle transazioni in un aeroporto, in un dato momento:

 > dt t_id airport thisTime 1: 1 a 5.1 2: 3 a 5.1 3: 2 a 6.2 

(nota che t_ids 1 & 3 hanno lo stesso aeroporto e lo stesso orario)

e una tabella di ricerca dei voli in partenza dagli aeroporti:

 > dt_lookup f_id airport thisTime 1: 1 a 6 2: 2 a 6 3: 1 b 7 4: 1 c 8 5: 2 d 7 6: 1 d 9 7: 2 e 8 > tables() NAME NROW NCOL MB COLS KEY [1,] dt 3 3 1 t_id,airport,thisTime airport,thisTime [2,] dt_lookup 7 3 1 f_id,airport,thisTime airport,thisTime 

Vorrei abbinare tutte le transazioni a tutti i prossimi voli in partenza da quell’aeroporto, per dare:

  t_id airport thisTime f_id 1 a 6 1 1 a 6 2 3 a 6 1 3 a 6 2 

Quindi ho pensato che questo avrebbe funzionato:

 > dt[dt_lookup, nomatch=0,roll=Inf] t_id airport thisTime f_id 1: 3 a 6 1 2: 3 a 6 2 

Ma non ha restituito transazioni t_id == 1 .

Dalla documentazione dice:

Di solito, non ci dovrebbero essere duplicati nella chiave di x, …

Tuttavia, ho duplicati nella mia “chiave x” (ovvero airport e questo thisTime ), e non riesco a vedere / capire cosa sta succedendo per dire che t_id = 1 viene rimosso dall’output.

Qualcuno può far luce sul motivo per cui t_id = 1 non viene restituito, e come posso far funzionare il join quando ho duplicati?

Dati

 library(data.table) dt <- data.table(t_id = seq(1:3), airport = c("a","a","a"), thisTime = c(5.1,6.2, 5.1), key=c( "airport","thisTime")) dt_lookup <- data.table(f_id = c(rep(1,4),rep(2,3)), airport = c("a","b","c","d", "a","d","e"), thisTime = c(6,7,8,9, 6,7,8), key=c("airport","thisTime"))