Nur frage mich, ob es ein effizienter Weg ist mit Datentabelle wieäußere Verknüpfung data.table R
a <- data.table(a=c(1,2,3),b=c(3,4,5))
b <- data.table(a=c(1,2),k=c(1,2))
merge(a,b,by="a",all.x=T)
das funktioniert gut zu tun Outer-Joins, aber es ist nicht so effizient wie die innere mit größeren Daten beitreten , denn das folgende läuft sehr schnell, aber das obige ist wirklich langsam.
setkey(a,a)
setkey(b,a)
a[b,]
Im ersten Fall sind 'a' und' b' unkeyed, so dass 'merge' die Schlüssel zuerst (als lokale Kopien innerhalb von merge) eingeben muss, da es 'a' und' nicht ändern will b 'im Aufrufbereich). Im zweiten Fall waren Sie glücklich, 'a' und' b' zu ändern, indem Sie sie eintippen (haben Sie die Zeit dafür angegeben?) Und dann ist 'a [b]' schnell. Aber selbst wenn ich überrascht bin, gibt es einen großen Unterschied. "Zusammenführen" sollte mit "x [y]" vergleichbar sein. Bitte geben Sie Versionsinformationen an, wenn Sie über Timings sprechen: Sind Sie auf v1.8.6? Und auch deine "sehr schnell" und "sehr langsam" könnte meine Vorstellung von "ähnlich" sein! Wie sind die tatsächlichen Zeiten? –
Es ist sehr einfach, schlecht/unpassend zu benchmarken, also müssen wir definitiv Ihre Methode des Timings sehen, bevor Sie irgendetwas sagen. –
Ich konnte dafür keine Zeit bereitstellen, da der erste im Speicher explodierte und die R-Sitzung abstürzte (um 19m Zeilen). Ich werde es mit einem kleineren Set benchmarken und die Ergebnisse veröffentlichen. (Version 1.8.2, verwende ich) – jamborta