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


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