Hinweis: Diese Frage und die folgenden Antworten beziehen sich auf data.table-Versionen < 1.5.3; v. 1.5.3 wurde im Februar 2011 veröffentlicht, um dieses Problem zu lösen. siehe aktuellere Behandlung (03-2012): Translating SQL joins on foreign keys to R data.table syntaxSo führen Sie eine data.table-Zusammenführungsoperation aus
Ich habe für die data.table package durch die Dokumentation Graben (Ersatz für data.frame, die für bestimmte Operationen wesentlich effizienter ist), einschließlich Josh Reich's presentation on SQL and data.table at the NYC R Meetup (pdf), aber kann diese völlig triviale Operation nicht herausfinden.
> x <- DT(a=1:3, b=2:4, key='a')
> x
a b
[1,] 1 2
[2,] 2 3
[3,] 3 4
> y <- DT(a=1:3, c=c('a','b','c'), key='a')
> y
a c
[1,] 1 a
[2,] 2 b
[3,] 3 c
> x[y]
a b
[1,] 1 2
[2,] 2 3
[3,] 3 4
> merge(x,y)
a b c
1 1 2 a
2 2 3 b
3 3 4 c
Die docs sagen: „Wenn [das erste Argument] ist selbst ein data.table, ein ähnliches aufgerufen Join basieren :: merge aber verwendet binäre Suche auf dem sortierten Schlüssel.“ Dies ist eindeutig nicht der Fall. Kann ich die anderen Spalten von y in das Ergebnis von x [y] mit data.tables bringen? Es scheint, als ob es nur die Reihen von x nimmt, wo der Schlüssel dem Schlüssel von y entspricht, aber den Rest von y ganz ignorierst ...
Dies wurde durch v1.5.3 gelöst, das im Februar 2011 an CRAN freigegeben wurde. Bitte lesen Sie NEWS, neue? Data.table und korrigierte FAQ. –