當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


R dplyr setops 設置操作


使用數據幀的行執行集合運算。

  • intersect(x, y) 查找 xy 中的所有行。

  • union(x, y) 查找 xy 中的所有行,不包括重複項。

  • union_all(x, y) 查找 xy 中的所有行,包括重複項。

  • setdiff(x, y) 查找 x 中不在 y 中的所有行。

  • symdiff(x, y) 計算對稱差,即 x 中不在 y 中的所有行以及 y 中不在 x 中的所有行。

  • 如果xy 包含相同的行(忽略順序),setequal(x, y) 返回TRUE

請注意, intersect()union()setdiff()symdiff() 刪除 xy 中的重複項。

用法

intersect(x, y, ...)

union(x, y, ...)

union_all(x, y, ...)

setdiff(x, y, ...)

setequal(x, y, ...)

symdiff(x, y, ...)

參數

x, y

一對兼容的數據幀。如果一對 DataFrame 具有相同的列名(可能順序不同)和兼容的類型,則它們是兼容的。

...

這些點用於將來的擴展,並且必須為空。

基本函數

intersect()union()setdiff()setequal() 覆蓋同名的基本函數以使它們通用。通過提供調用基函數的默認方法來保留向量的現有行為。

例子

df1 <- tibble(x = 1:3)
df2 <- tibble(x = 3:5)

intersect(df1, df2)
#> # A tibble: 1 × 1
#>       x
#>   <int>
#> 1     3
union(df1, df2)
#> # A tibble: 5 × 1
#>       x
#>   <int>
#> 1     1
#> 2     2
#> 3     3
#> 4     4
#> 5     5
union_all(df1, df2)
#> # A tibble: 6 × 1
#>       x
#>   <int>
#> 1     1
#> 2     2
#> 3     3
#> 4     3
#> 5     4
#> 6     5
setdiff(df1, df2)
#> # A tibble: 2 × 1
#>       x
#>   <int>
#> 1     1
#> 2     2
setdiff(df2, df1)
#> # A tibble: 2 × 1
#>       x
#>   <int>
#> 1     4
#> 2     5
symdiff(df1, df2)
#> # A tibble: 4 × 1
#>       x
#>   <int>
#> 1     1
#> 2     2
#> 3     4
#> 4     5

setequal(df1, df2)
#> [1] FALSE
setequal(df1, df1[3:1, ])
#> [1] TRUE

# Note that the following functions remove pre-existing duplicates:
df1 <- tibble(x = c(1:3, 3, 3))
df2 <- tibble(x = c(3:5, 5))

intersect(df1, df2)
#> # A tibble: 1 × 1
#>       x
#>   <dbl>
#> 1     3
union(df1, df2)
#> # A tibble: 5 × 1
#>       x
#>   <dbl>
#> 1     1
#> 2     2
#> 3     3
#> 4     4
#> 5     5
setdiff(df1, df2)
#> # A tibble: 2 × 1
#>       x
#>   <dbl>
#> 1     1
#> 2     2
symdiff(df1, df2)
#> # A tibble: 4 × 1
#>       x
#>   <dbl>
#> 1     1
#> 2     2
#> 3     4
#> 4     5
源代碼:R/sets.R

相關用法


注:本文由純淨天空篩選整理自Hadley Wickham等大神的英文原創作品 Set operations。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。