2017-07-02 192 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

感谢大卫的回应。但我并不真正看到这种联系。你能解释一下吗? – Jim

+0

我认为这正是你正在寻找的,所以我不知道该怎么解释。无论哪种方式,请参阅[这里](https://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)如何以可重现的方式发布问题,并请显示您的期望输出。 –

回答

1

比方说你有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_leftDT_right左联接然后i.valuei.left_value即列的列名你想从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