相关疑难解决方法(0)

使用data.table进行左连接

假设我有两个data.table:

A:

  A  B
1: 1 12
2: 2 13
3: 3 14
4: 4 15
Run Code Online (Sandbox Code Playgroud)

B:

   A  B
1: 2 13
2: 3 14
Run Code Online (Sandbox Code Playgroud)

我有以下代码:

merge_test = merge(dataA, dataB, by="A", all.data=TRUE)
Run Code Online (Sandbox Code Playgroud)

我明白了:

   A B.x B.y
1: 2  13  13
2: 3  14  14
Run Code Online (Sandbox Code Playgroud)

但是,我想在最终合并表中的dataA中的所有行.有没有办法做到这一点?

merge r data.table

39
推荐指数
2
解决办法
3万
查看次数

连接两个数据表并仅使用R中第二个dt中的一个列

编辑使其更清洁.假设我有两个数据表(dt1和dt2),我想使用数据表获取dt3.A,B,C,E,F,G,H是列名.dt1键是列A,dt2键是列E.数据表具有不同的行数.我想保留DT1中的所有列,并且只将一个列(H)从DT2添加到已连接的数据表中.最终,我将它存储为DT1(虽然我在下面显示为dt3).

如何使用数据表实现它?我有一个丑陋的解决方案与合并+数据框架.

dt1 
A   B   C   
1   4   7   
2   5   8   
3   6   9   
2   20  21

dt2
E   F   G   H
1   10  13  16
3   12  15  18    
2   11  14  17


dt3
A   B   C   H
1   4   7   16
2   5   8   17
3   6   9   18
2   20  21  17          
Run Code Online (Sandbox Code Playgroud)

merge join r data.table

6
推荐指数
1
解决办法
4248
查看次数

通过引用将所有列合并到data.table中

我想data.table通过引用将两个合并在一起,而不必写下我要合并的所有变量。这是一个了解我的需求的简单示例:

set.seed(20170711)
(a <- data.table(v_key=seq(1, 5), key="v_key"))
#   v_key
#1:     1
#2:     2
#3:     3
#4:     4
#5:     5

a_backup <- copy(a)

(b <- data.table(v_key=seq(1, 5), v1=runif(5), v2=runif(5), v3=runif(5), key="v_key"))
#   v_key          v1        v2          v3
#1:     1 0.141804303 0.1311052 0.354798849
#2:     2 0.425955903 0.3635612 0.950234261
#3:     3 0.001070379 0.4615936 0.359660693
#4:     4 0.453054854 0.5768500 0.008470552
#5:     5 0.951767837 0.1649903 0.565894298
Run Code Online (Sandbox Code Playgroud)

我想在不指定列名的情况下将每个列复制ba引用中。

我可以执行以下操作,但这会无缘无故地复制对象,从而降低程序性能并增加所需的RAM:

(a  <- a[b])
#   v_key          v1        v2          v3
#1:     1 0.141804303 0.1311052 …
Run Code Online (Sandbox Code Playgroud)

r data.table

3
推荐指数
1
解决办法
345
查看次数

标签 统计

data.table ×3

r ×3

merge ×2

join ×1