交叉联接将 x
中的每一行与 y
中的每一行进行匹配,从而生成具有 nrow(x) * nrow(y)
行的数据帧。
由于交叉联接会导致 x
和 y
之间的所有可能匹配,因此从技术上讲,它们是所有 mutating joins 的基础,通常可以将其视为交叉联接后跟过滤器。在实践中,使用更专门的过程来获得更好的性能。
参数
- x, y
-
一对数据帧、数据帧扩展(例如 tibble)或惰性数据帧(例如来自 dbplyr 或 dtplyr)。有关更多详细信息,请参阅下面的方法。
- ...
-
传递给方法的其他参数。
- copy
-
如果
x
和y
不是来自同一个数据源,并且copy
是TRUE
,则y
将被复制到与x
相同的源中。这允许您跨 src 连接表,但这是一项潜在昂贵的操作,因此您必须选择它。 - suffix
-
如果
x
和y
中存在未连接的重复变量,这些后缀将添加到输出中以消除它们的歧义。应该是长度为 2 的字符向量。
值
与x
相同类型的对象(包括相同的组)。输出具有以下属性:
-
返回了
nrow(x) * nrow(y)
行。 -
输出列包括
x
和y
中的所有列。使用suffix
解决列名冲突。 -
尽可能保留
x
的行和列的顺序。
方法
该函数是泛型函数,这意味着包可以为其他类提供实现(方法)。有关额外参数和行为差异,请参阅各个方法的文档。
加载的包中当前提供以下方法: dbplyr ( tbl_lazy
)、dplyr ( data.frame
) 。
也可以看看
其他连接:filter-joins
、mutate-joins
、nest_join()
例子
# Cross joins match each row in `x` to every row in `y`.
# Data within the columns is not used in the matching process.
cross_join(band_instruments, band_members)
#> # A tibble: 9 × 4
#> name.x plays name.y band
#> <chr> <chr> <chr> <chr>
#> 1 John guitar Mick Stones
#> 2 John guitar John Beatles
#> 3 John guitar Paul Beatles
#> 4 Paul bass Mick Stones
#> 5 Paul bass John Beatles
#> 6 Paul bass Paul Beatles
#> 7 Keith guitar Mick Stones
#> 8 Keith guitar John Beatles
#> 9 Keith guitar Paul Beatles
# Control the suffix added to variables duplicated in
# `x` and `y` with `suffix`.
cross_join(band_instruments, band_members, suffix = c("", "_y"))
#> # A tibble: 9 × 4
#> name plays name_y band
#> <chr> <chr> <chr> <chr>
#> 1 John guitar Mick Stones
#> 2 John guitar John Beatles
#> 3 John guitar Paul Beatles
#> 4 Paul bass Mick Stones
#> 5 Paul bass John Beatles
#> 6 Paul bass Paul Beatles
#> 7 Keith guitar Mick Stones
#> 8 Keith guitar John Beatles
#> 9 Keith guitar Paul Beatles
相关用法
- R dplyr copy_to 将本地数据帧复制到远程src
- R dplyr consecutive_id 为连续组合生成唯一标识符
- R dplyr coalesce 找到第一个非缺失元素
- R dplyr context 有关“当前”组或变量的信息
- R dplyr cumall 任何、全部和平均值的累积版本
- R dplyr compute 强制计算数据库查询
- R dplyr case_match 通用向量化 switch()
- R dplyr c_across 合并多列的值
- R dplyr count 计算每组中的观察结果
- R dplyr case_when 通用向量化 if-else
- R dplyr group_trim 修剪分组结构
- R dplyr slice 使用行的位置对行进行子集化
- R dplyr sample_n 从表中采样 n 行
- R dplyr row_number 整数排名函数
- R dplyr band_members 乐队成员
- R dplyr mutate-joins 变异连接
- R dplyr nth 从向量中提取第一个、最后一个或第 n 个值
- R dplyr group_split 按组分割 DataFrame
- R dplyr mutate 创建、修改和删除列
- R dplyr order_by 用于排序窗口函数输出的辅助函数
- R dplyr percent_rank 比例排名函数
- R dplyr recode 重新编码值
- R dplyr starwars 星球大战人物
- R dplyr desc 降序
- R dplyr between 检测值落在指定范围内的位置
注:本文由纯净天空筛选整理自Hadley Wickham等大神的英文原创作品 Cross join。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。