2017-07-02 2 views
0

data.tableでは、コピーを作成せずに現在のデータテーブル(DTなど)に対して直接作業することができます。たとえば、これは新しい列を作成するときに実行できます。Rデータマージ(コピーなし)

DT[,new_col:=1] 

私はこのことがマージのためにどのように行われるのか、特に左のジョインを知りたいと思います。例えば、左の参加のデータテーブルの方法は、

DT_right[DT_left,on="id"] 

あるしかし、これは再割り当てするために私を必要とし、元DT_leftテーブルを変更しません。すなわち

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

再割り当てせずにこれを行う方法はありますか?つまり、DT_leftを直接操作します。

+1

すべての列を 'DT_right'から' DT_left'に追加しますか? [this](https://stackoverflow.com/questions/30468455/dynamically-build-call-for-lookup-multiple-columns/30469832#30469832)を参照してください。 –

+0

応答Davidに感謝します。しかし、私は実際に接続が表示されません。あなたはもう少し説明できますか? – Jim

+0

私はこれがあなたが探しているものとまったく同じだと仮定したので、何を説明するのか分かりません。いずれにせよ、[ここ](https://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)の質問を再現可能な方法で投稿する方法をご確認ください。出力。 –

答えて

1

あなたがDT_rightDT_leftの左の参加を実行したい場合は、その後i.valueは、列の列名すなわちi.left_valueになりますDT_right

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

として

DT_left as

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

を考えてみましょうDT_leftからDT_rightに参加します。

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 
関連する問題