Ich versuche die zugrundeliegende Logik zu verstehen, wie das Ergebnis eines nicht-equi Joins in data.table
in auf jeder Ebene der on
-Variable angeordnet ist.
Nur um es von Anfang an klarzustellen: Ich habe kein Problem mit der Bestellung selbst, oder um die Ausgabe nach dem Beitritt auf eine gewünschte Weise zu ordnen. Da jedoch die Ausgabe von allen anderen data.table
-Operationen sehr konsistent ist, vermute ich, dass auch in nicht-equi-Joins ein Ordnungsmuster angezeigt wird.
Ich werde zwei Beispiele geben, wo zwei verschiedene "große" Datensätze mit einem kleineren zusammengefügt werden. Ich habe versucht, die offensichtlichsten Muster in der Ausgabe innerhalb jeder Verknüpfung zu beschreiben, sowie Instanzen, bei denen das Muster zwischen den Joins der beiden Datensätze abweicht.
%Vor% Ungleicher Join zwischen dem ersten großen Datensatz und dem kleinen, on = .(y >= val)
.
Der zweite 'große' Datensatz:
%Vor%Gleicher Nicht-Equi-Join zwischen dem zweiten großen Datensatz mit dem kleinen:
%Vor% Kann jemand die Logik von (1) der Ordnung innerhalb jeder Ebene der on
-Variable erklären, hier besonders innerhalb der zweiten Übereinstimmung, wo die ursprüngliche Reihenfolge von Die Daten werden nicht im Ergebnis gespeichert. Und (2) warum unterscheidet sich die Reihenfolge zwischen Chunks in Übereinstimmungen, wenn die zwei verschiedenen Datensätze verwendet werden?
Danke, dass Sie das hier eingefangen haben und hier über SO berichten und es auf Github einreichen. Dies sollte jetzt behoben werden in der aktuellen Entwicklungsversion (zum Zeitpunkt des Schreibens von Version 1.0.5).
Es sollte bald auf CRAN als v1.10.6 verfügbar sein.
Aus NEWS -Eintrag:
- Die Reihenfolge der in Nicht-Equi-Joins zurückgegebenen Zeilen war in bestimmten Szenarien falsch, wie unter # 1991 berichtet . Dies ist jetzt behoben. Danke an @ Henrik-P für die Berichterstattung.
Tags und Links r data.table join