R语言【dplyr】——right_join(x, y)将y在x中找到的匹配项传回y

Package dplyr version 1.1.4


R 复制代码
right_join(
  x,
  y,
  by = NULL,
  copy = FALSE,
  suffix = c(".x", ".y"),
  ...,
  keep = NULL
)


## S3 method for class 'data.frame'
right_join(
  x,
  y,
  by = NULL,
  copy = FALSE,
  suffix = c(".x", ".y"),
  ...,
  keep = NULL,
  na_matches = c("na", "never"),
  multiple = "all",
  unmatched = "drop",
  relationship = NULL
)

参数【x,y】:一对数据集(data frame),数据集扩展(比如:tibble),或者 lazy data frames(比如:来自 dbplyrdtplyr)。

参数【by】:使用join_by() 创建的联接规范,或要联接的变量的字符向量。

  • 如果为 NULL(默认值),*_join() 将执行自然连接,使用参数【x】和参数【y】的所有共同变量。会有一条信息列出变量,以便您检查它们是否正确;如果明确提供变量,就可以抑制该信息。
  • 要连接参数【x】和参数【y】之间的不同变量,请使用**join_by()**规范。例如,**join_by(a == b)**将匹配 xa 与 yb。
  • 要通过多个变量连接,请使用带有多个表达式的 join_by() 规范。例如,join_by(a == b, c == d) 将匹配 xa 到 yb,xc 到 yd。如果参数【x】和参数【y】的列名相同,可以只列出变量名,如join_by(a,c),从而缩短计算时间。
  • join_by() 还可用于执行不等式连接、滚动连接和重叠连接。有关这些连接类型的详细信息,请参阅 ?join_by 文档。
  • 对于简单的相等连接,也可以指定一个变量名字符向量来连接。例如,**by = c("a", "b")**将 xa 连接到 ya,将 xb 连接到 yb。如果参数【x】和参数【y】的变量名不同,可使用命名字符向量,如 by = c("x_a" = "y_a", "x_b" = "y_b")

参数【copy】:如果参数【x】和参数【y】不是来自同一个数据源,且参数【copy】为 TRUE,那么参数【y】将被复制到与参数【x】相同的 src 中。这样就可以跨 srcs 连接表,但这可能是一项昂贵的操作,因此必须选择使用。

参数【suffix】:如果参数【x】和参数【y】中存在非连接的重复变量,输出时将添加这些后缀以消除歧义。应为长度为 2 的字符向量。

参数【...】:传入方法的其他参数。

参数【keep】:输出中是否应该保留参数【x】和参数【y】的连接键?

  • 如果为 NULL(默认值),则等价连接只保留参数【x】的键值,而不等价连接则保留参数【x】和参数【y】的键值。
  • 如果为 TRUE,则保留来自参数【x】和参数【y】的所有按键。
  • 如果为 FALSE,则只保留参数【x】的键值。对于 right_join()full_join(),与只存在于参数【y】中的行相对应的关键列中的数据会合并到来自参数【x】的关键列中。在不平等条件下连接时不能使用。

参数【na_matches】:两个 NA 值或两个 NaN 值应该匹配吗?

  • 默认为 "na",将两个 NA 值或两个 NaN 值视为相等,如 %in%、match() 和 merge()
  • "never " 将两个 NA 或两个 NaN 值视为不同的值,绝不会将它们匹配在一起或与任何其他值匹配。它类似于数据库源的连接和 base::merge(incomparables = NA)

参数【multiple】:处理参数【x】中与参数【y】中多个匹配项匹配的行。对于参数【x】的每一行:

  • 默认为 "all",返回参数【y】中检测到的所有匹配。这与 SQL 的行为相同。
  • "any " 返回参数【y】中检测到的一个匹配项,但不保证返回哪个匹配项。如果只需要检测是否至少有一个匹配项,它通常比 "first " 和 "last " 更快。
  • "first " 返回在参数【y】中检测到的第一个匹配项。
  • "last " 返回在参数【y】中检测到的最后一个匹配项。

参数【unmatched】:如何处理会导致丢弃行的不匹配键?

  • "drop " 会从结果中删除不匹配的键。
  • 如果检测到不匹配的键,"error " 会抛出一个错误。

参数【unmatched】的目的是防止在连接过程中意外丢弃记录。它只检查输入中可能丢行的不匹配键。

  • **left_join()**检查参数【y】;
  • **right_join()**检查参数【x】;
  • **inner_join()**检查参数【x】和参数【y】。

参数【relationship】:处理 参数【x】和参数【y】的键之间的预期关系。如果从下面列表中选择的预期关系无效,则会出错。

  • 默认设置为 NULL,不希望参数【x】和参数【y】之间存在任何关系。不过,对于相等连接,它会检查是否存在多对多关系(这通常是意料之外的),如果出现这种关系,它会发出警告,提醒您仔细查看输入内容,或通过指定 "many-to-many" 来明确这种关系。
  • "one-to-one" 期望:参数【x】中的每一行最多匹配参数【y】中的一行。参数【y】中的每一行最多匹配参数【x】中的一行。
  • "one-to-many" 期望:参数【y】中的每一行最多匹配参数【x】中的一行。
  • "many-to-one" 期望:参数【x】中的每一行最多匹配参数【y】中的一行。
  • "many-to-many" 期望:并不执行任何关系检查,但如果您知道存在这种关系,则可以通过它来明确这种关系。

**right_join()**会将所有观测值保留在参数【y】中。


相关推荐
jiang_changsheng2 天前
环境管理工具全景图与深度对比
java·c语言·开发语言·c++·python·r语言
JicasdC123asd2 天前
使用Faster R-CNN模型训练汽车品牌与型号检测数据集 改进C4结构 优化汽车识别系统 多类别检测 VOC格式
r语言·cnn·汽车
请你喝好果汁6412 天前
## 学习笔记:R 语言中比例字符串的数值转换,如GeneRatio中5/100的处理
笔记·学习·r语言
怦怦蓝2 天前
DB2深度解析:从架构原理到与R语言的集成实践
开发语言·架构·r语言·db2
新新学长搞科研2 天前
【CCF主办 | 高认可度会议】第六届人工智能、大数据与算法国际学术会议(CAIBDA 2026)
大数据·开发语言·网络·人工智能·算法·r语言·中国计算机学会
Piar1231sdafa3 天前
战斗车辆状态识别与分类 --- 基于Mask R-CNN和RegNet的模型实现
r语言·cnn
陳土3 天前
R语言Offier包源码—1:read_docx()
r语言
善木科研喵3 天前
IF5.9分,α-硫辛酸如何缓解化疗神经毒性?网络毒理学结合网络药理学双重锁定关键通路!
数据库·数据分析·r语言·sci·生信分析·医学科研
Piar1231sdafa4 天前
椅子目标检测新突破:Cascade R-CNN模型详解与性能优化_1
目标检测·r语言·cnn
Loacnasfhia94 天前
基于Mask R-CNN与RegNetX的钢水罐及未定义物体目标检测系统研究_1
目标检测·r语言·cnn