在 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_left上DT_right,然后i.value将i.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
Run Code Online (Sandbox Code Playgroud)