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


R dplyr distinct_all 通过选择变量来选择不同的行


[Superseded]

作用域动词( _if_at_all )已被现有动词中的 pick()across() 取代。有关详细信息,请参阅vignette("colwise")

distinct() 的这些 scoped 变体通过选择变量来提取不同的行。与 distinct() 一样,您可以在使用 .funs 参数进行排序之前修改变量。

用法

distinct_all(.tbl, .funs = list(), ..., .keep_all = FALSE)

distinct_at(.tbl, .vars, .funs = list(), ..., .keep_all = FALSE)

distinct_if(.tbl, .predicate, .funs = list(), ..., .keep_all = FALSE)

参数

.tbl

tbl 对象。

.funs

函数 fun 、 quosure 样式 lambda ~ fun(.) 或任一形式的列表。

...

.funs 中函数调用的附加参数。这些仅在 tidy dots 支持下评估一次。

.keep_all

如果是 TRUE ,则将所有变量保留在 .data 中。如果 ... 的组合不不同,则保留第一行值。

.vars

vars() 生成的列列表、列名称的字符向量、列位置的数值向量或 NULL

.predicate

应用于列或逻辑向量的谓词函数。选择.predicate 为或返回TRUE 的变量。该参数传递给rlang::as_function(),因此支持quosure-style lambda 函数和表示函数名称的字符串。

对变量进行分组

考虑作为选择一部分的分组变量来确定不同的行。

例子

df <- tibble(x = rep(2:5, each = 2) / 2, y = rep(2:3, each = 4) / 2)

distinct_all(df)
#> # A tibble: 4 × 2
#>       x     y
#>   <dbl> <dbl>
#> 1   1     1  
#> 2   1.5   1  
#> 3   2     1.5
#> 4   2.5   1.5
# ->
distinct(df, pick(everything()))
#> # A tibble: 4 × 2
#>       x     y
#>   <dbl> <dbl>
#> 1   1     1  
#> 2   1.5   1  
#> 3   2     1.5
#> 4   2.5   1.5

distinct_at(df, vars(x,y))
#> # A tibble: 4 × 2
#>       x     y
#>   <dbl> <dbl>
#> 1   1     1  
#> 2   1.5   1  
#> 3   2     1.5
#> 4   2.5   1.5
# ->
distinct(df, pick(x, y))
#> # A tibble: 4 × 2
#>       x     y
#>   <dbl> <dbl>
#> 1   1     1  
#> 2   1.5   1  
#> 3   2     1.5
#> 4   2.5   1.5

distinct_if(df, is.numeric)
#> # A tibble: 4 × 2
#>       x     y
#>   <dbl> <dbl>
#> 1   1     1  
#> 2   1.5   1  
#> 3   2     1.5
#> 4   2.5   1.5
# ->
distinct(df, pick(where(is.numeric)))
#> # A tibble: 4 × 2
#>       x     y
#>   <dbl> <dbl>
#> 1   1     1  
#> 2   1.5   1  
#> 3   2     1.5
#> 4   2.5   1.5

# You can supply a function that will be applied before extracting the distinct values
# The variables of the sorted tibble keep their original values.
distinct_all(df, round)
#> # A tibble: 3 × 2
#>       x     y
#>   <dbl> <dbl>
#> 1     1     1
#> 2     2     1
#> 3     2     2
# ->
distinct(df, across(everything(), round))
#> # A tibble: 3 × 2
#>       x     y
#>   <dbl> <dbl>
#> 1     1     1
#> 2     2     1
#> 3     2     2

相关用法


注:本文由纯净天空筛选整理自Hadley Wickham等大神的英文原创作品 Select distinct rows by a selection of variables。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。