基于R中的两列连接

时间:2014-06-04 21:09:08

标签: sql r join left-join dplyr

假设我们有2个表。

第一张表A

name    x     y
  a     1     2
  b     3     4
  c     5     7
  d     8     7
  c     5     3
  b     5     4

第二张表B

name    z     w
  a     1     9
  b     3     5
  c     5     2
  d     8     1
  b     5     9

我希望left join以及namex对这两个表格进行z,即xz基本上是name x y w a 1 2 9 b 3 4 5 c 5 7 2 d 8 7 1 c 5 3 2 b 5 4 9 相同,但名称不同。因此,决赛桌应如下所示:

R

如何在SQL或{{1}}?

中了解如何做到这一点

3 个答案:

答案 0 :(得分:0)

   SELECT A.NAME,A.X,B.Y.B.W FROM A INNER JOIN B 
   ON 
   A.X=B.Z

答案 1 :(得分:0)

在SQL中

select A.name, x, y, w
from A
join B
on A.name = B.name and x = z

dplyr中,您需要将B&#39 {s} z重命名为xdplyr将确保每个名称相同的列都相同。

library(dplyr)
names(B)[which(names(B) == "z")] <- "x"
left_join(A, B)

您可以使用基本功能执行类似操作,请参阅?merge

答案 2 :(得分:0)

在PostgreSQL中:

SELECT * 
FROM "A"
LEFT OUTER JOIN "B"
ON "A".name = "B".name
AND x = w

在r:

请输入

?merge
在r命令行上

以查看merge函数的文档。

这应该是您正在寻找的东西:

merge(x=A, y=B, by.x = c("name","x"), by.y=c("name","w"), all.x=TRUE)