2017-07-02 4 views
0

In data.table ist es möglich direkt an der aktuellen Datentabelle (zB DT) zu arbeiten, ohne eine Kopie davon zu erstellen. Dies kann beispielsweise beim Erstellen einer neuen Spalte erfolgen.R Datenzusammenführung ohne Kopieren

Ich würde gerne wissen, wie dies für das Zusammenführen, insbesondere Links Join getan werden kann. Zum Beispiel kommen die Datentabelle Art und Weise von links ist

DT_right[DT_left,on="id"] 

Allerdings bedeutet dies die ursprüngliche DT_left Tabelle nicht ändern, erfordert mich neu zuzuweisen. d. h.

DT_left = DT_right[DT_left,on="id"] 

Gibt es eine Möglichkeit für mich, dies ohne Neuzuweisung zu tun? d.h. direkt an DT_left arbeiten.

+1

Sie möchten alle Spalte von 'DT_right' zu' DT_left' hinzufügen? Siehe [this] (https://stackoverflow.com/questions/30468455/dynamically-build-call-for-lookup-multiple-columns/30469832#30469832). –

+0

Danke für die Antwort David. Aber ich sehe die Verbindung nicht wirklich. Könntest du ein bisschen mehr erklären? – Jim

+0

Ich nahm an, dies tut genau das, was Sie suchen, also weiß ich nicht, was ich erklären soll. Wie auch immer - siehe [hier] (https://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example), um Fragen reproduzierbar zu stellen und bitte zeigen Sie Ihre Wünsche Ausgabe. –

Antwort

1

Können sagen, Sie haben DT_right als

 id right_value 
    1: 1   2 
    2: 2   4 
    3: 3   6 
    4: 4   8 

und DT_left as

id left_value 
1: 1   3 
2: 2   6 
3: 3   9 
4: 4   12 

, wenn Sie links-Join von DT_left auf DT_right ausführen wollen, dann wird i.valuei.left_value dh der Spalte Name der Spalte sein Sie möchten von DT_left zu DT_right beitreten.

DT_right[DT_left, joined_from_left := i.left_value, on = "id"] 
DT_right[] 
    id right_value joined_from_left 
1: 1   2    3 
2: 2   4    6 
3: 3   6    9 
4: 4   8    12 
Verwandte Themen