inner_join和semi_join有什么区别?[副本]

hs1rzwqc  于 2023-05-04  发布在  其他
关注(0)|答案(1)|浏览(333)

此问题已在此处有答案

Difference between INNER JOIN and LEFT SEMI JOIN(5个答案)
14小时前关闭
我不明白inner_join和semi_join的区别。你能给我举个例子吗?
根据R

  • semi_join()返回x中与y匹配的所有行。
  • inner_join()只保留x中与y中有匹配键的观测。
e4yzc0pl

e4yzc0pl1#

semi_join()inner_join()返回的x中的行是相同的。不同之处在于,inner_join将添加y中存在但不存在于x中的列,但semi_join不会添加来自y的任何列。

x = data.frame(a = 1:3)
y = data.frame(a = 2:4, b = 10:12)

## with an inner join, the `b` column is part of the result
inner_join(x, y)
# Joining, by = "a"
#   a  b
# 1 2 10
# 2 3 11

## with a semi join, the `b` column is not part of the result
## because it is not part of `x`
semi_join(x, y)
# Joining, by = "a"
#   a
# 1 2
# 2 3

这些连接一起记录为 “mutating joins”,在?inner_join中描述为
可变联接添加从yx的列,并基于键匹配行
?semi_join中一起记录的 “过滤连接” 进行比较
筛选联接根据y中是否存在匹配项从x中筛选行
过滤联接只过滤x,它们不添加来自y的列。

相关问题