假设我们有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
以及name
和x
对这两个表格进行z
,即x
和z
基本上是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}}?
答案 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
重命名为x
。 dplyr
将确保每个名称相同的列都相同。
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)