R 数据合并而不复制

Jim*_*Jim 3 r data.table

在 data.table 中,可以直接处理当前数据表(比如 DT)而无需创建它的副本。例如,这可以在创建新列时完成。

DT[,new_col:=1]
Run Code Online (Sandbox Code Playgroud)

我想知道如何进行合并,特别是左连接。比如左连接的数据表方式是

DT_right[DT_left,on="id"]
Run Code Online (Sandbox Code Playgroud)

但是,这不会修改原始的 DT_left 表,需要我重新分配。IE

DT_left = DT_right[DT_left,on="id"]
Run Code Online (Sandbox Code Playgroud)

有没有办法让我在不重新分配的情况下做到这一点?即直接在 DT_left 上工作。

小智 5

比方说,你有DT_right作为

     id right_value
  1:  1           2
  2:  2           4
  3:  3           6
  4:  4           8
Run Code Online (Sandbox Code Playgroud)

DT_left as

    id left_value
 1:  1          3
 2:  2          6
 3:  3          9
 4:  4         12
Run Code Online (Sandbox Code Playgroud)

如果要执行的左连接DT_leftDT_right,然后i.valuei.left_value也就是说你想从加盟列的列名DT_leftDT_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
Run Code Online (Sandbox Code Playgroud)