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

slice_sample.(
  .df,
  n,
  prop,
  weight_by = NULL,
  replace = FALSE,
  .by = NULL,
  by = NULL
)

Arguments

.df

A data.frame or data.table

n

Number of rows to grab

prop

The proportion of rows to select

weight_by

Sampling weights

replace

Should sampling be performed with (TRUE) or without (FALSE, default) replacement

.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