Choose rows in a data.table. Grouped data.tables grab rows within each group.

slice_max.(.df, order_by, n = 1, ..., with_ties = TRUE, .by = NULL, by = NULL)

Arguments

.df

A data.frame or data.table

order_by

Variable to arrange by

n

Number of rows to grab

...

Integer row values

with_ties

Should ties be kept together. The default TRUE may return can return multiple rows if they are equal. Use FALSE to ignore ties.

.by, by

Columns to group by

Examples

df <- data.table(
  x = 1:4,
  y = 5:8,
  z = c("a", "a", "a", "b")
)

df %>%
  slice(1:3)
#> # A tidytable: 3 × 3
#>       x     y z    
#>   <int> <int> <chr>
#> 1     1     5 a    
#> 2     2     6 a    
#> 3     3     7 a    

df %>%
  slice(1, 3)
#> # A tidytable: 2 × 3
#>       x     y z    
#>   <int> <int> <chr>
#> 1     1     5 a    
#> 2     3     7 a    

df %>%
  slice(1:2, .by = z)
#> # A tidytable: 3 × 3
#>       x     y z    
#>   <int> <int> <chr>
#> 1     1     5 a    
#> 2     2     6 a    
#> 3     4     8 b    

df %>%
  slice_head(1, .by = z)
#> # A tidytable: 2 × 3
#>       x     y z    
#>   <int> <int> <chr>
#> 1     1     5 a    
#> 2     4     8 b    

df %>%
  slice_tail(1, .by = z)
#> # A tidytable: 2 × 3
#>       x     y z    
#>   <int> <int> <chr>
#> 1     3     7 a    
#> 2     4     8 b    

df %>%
  slice_max(order_by = x, .by = z)
#> # A tidytable: 2 × 3
#>       x     y z    
#>   <int> <int> <chr>
#> 1     4     8 b    
#> 2     3     7 a    

df %>%
  slice_min(order_by = y, .by = z)
#> # A tidytable: 2 × 3
#>       x     y z    
#>   <int> <int> <chr>
#> 1     1     5 a    
#> 2     4     8 b