交叉聯接將 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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。