Innerer Join mit einem Ungleichheitsausdruck

8

Hintergrund

(Nicht für die Frage erforderlich, kann aber zum Lesen hilfreich sein)

Rollen Sie Join in data.table mit doppelten Schlüsseln

Ungerades Verhalten beim Beitritt zu mehreren Bedingungen

Daten

%Vor%

Frage

Ich würde gerne den Ankünften bei den Abreisen beitreten für nur jene dt_depart$journey_id , die nach dt_arrive$journey_id in arrival_minutes vorkommen (also ein innerer Join) auf txn_id & amp; place )

Zum Beispiel wäre die Ausgabe, die ich möchte:

%Vor%

Versuche

Mit der Methode aus den beiden verknüpften Fragen habe ich

konstruiert %Vor%

Aber das gibt alles von dt_depart , also beinhaltet NA s im Ergebnis - was auf einen 'richtigen Join' hindeutet:

%Vor%

Ich habe versucht, nomatch=0 zu verwenden, um es zum "inneren Join" zu zwingen, aber das hat nicht funktioniert.

Ich kann complete.cases verwenden, um die Zeilen NA zu entfernen, aber ich habe mich gefragt, ob es eine Möglichkeit gibt, dies in der Abfrage selbst zu tun?

    
tospig 12.10.2015, 03:03
quelle

2 Antworten

3

Hier ist der unklare Ansatz: Nehmen Sie den Cross / Cartesian Join und filtern Sie dann.

%Vor%

Wenn wir den kartesischen Join übernehmen, können wir sehr viel Speicher verbrauchen.

    
Frank 12.10.2015 12:03
quelle
1

Eine mögliche Lösung besteht darin, foverlaps zu verwenden, indem Sie einige willkürliche Intervallspalten erstellen

%Vor%

Benchmarking

%Vor%     
tospig 08.02.2016 10:34
quelle

Tags und Links