当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。