合并数据表,如R中的数据帧

Mik*_*ynn 12 r data.table

由于时间限制,我决定在我的代码中使用数据表而不是数据帧,因为它们要快得多.但是,我仍然想要数据帧的功能.我需要合并两个数据表,保留所有值(比如在合并中设置all = TRUE).

一些示例代码:

> x1 = data.frame(index = 1:10)
> y1 = data.frame(index = c(2,4,6), weight = c(.2, .5, .3))
> x1
   index
1      1
2      2
3      3
4      4
5      5
6      6
7      7
8      8
9      9
10    10
> y1
  index weight
1     2    0.2
2     4    0.5
3     6    0.3

> merge(x,y, all=TRUE)
      index weight
 [1,]     1     NA
 [2,]     2      1
 [3,]     3     NA
 [4,]     4      2
 [5,]     5     NA
 [6,]     6      3
 [7,]     7     NA
 [8,]     8     NA
 [9,]     9     NA
[10,]    10     NA
Run Code Online (Sandbox Code Playgroud)

现在我可以用数据表做类似的事吗?(NA不一定要留下来,不管怎么说,我把它们改为0).

> x2 = data.table(index = 1:10, key ="index")
> y2 = data.table(index = c(2,4,6), weight= c(.3,.5,.2))
Run Code Online (Sandbox Code Playgroud)

我知道你可以合并,但我也知道有更快的方法.

shh*_*its 8

所以继续将外键上的SQL连接转换为R data.table语法

x2 = data.table(index = 1:10, key ="index")
y2 = data.table(index = c(2,4,6), weight= c(.3,.5,.2),key="index")
y2[J(x2$index)]
Run Code Online (Sandbox Code Playgroud)

  • 是的,实际上只是在一秒钟之前想出来的.实际上y2 [x2]也可以正常工作,但之前我已经忽略了它,因为x2 [y2]没有保留所有这些并且我认为它们是相同的.谢谢! (3认同)