`slice()` lets you index rows by their (integer) locations. It allows you to select, remove, and duplicate rows. It is accompanied by a number of helpers for common use cases:

* `slice_head()` and `slice_tail()` select the first or last rows. * `slice_sample()` randomly selects rows. * `slice_min()` and `slice_max()` select rows with highest or lowest values of a variable.

slice(.data, ...)

slice_head(.data, n)

slice_tail(.data, n)

slice_max(.data, order_by, n, with_ties = TRUE)

slice_min(.data, order_by, n, with_ties = TRUE)

slice_sample(.data, n, replace = FALSE)

Arguments

.data

A data.table

...

Provide either positive values to keep, or negative values to drop. The values provided must be either all positive or all negative.

n

When larger than or equal to 1, the number of rows. When between 0 and 1, the proportion of rows to select.

order_by

Variable or function of variables to order by.

with_ties

Should ties be kept together? The default, `TRUE`, may return more rows than you request. Use `FALSE` to ignore ties, and return the first `n` rows.

replace

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

Value

A data.table

See also

Examples

a = as.data.table(iris) slice(a,1,2)
#> Sepal.Length Sepal.Width Petal.Length Petal.Width Species #> <num> <num> <num> <num> <fctr> #> 1: 5.1 3.5 1.4 0.2 setosa #> 2: 4.9 3.0 1.4 0.2 setosa
slice(a,2:3)
#> Sepal.Length Sepal.Width Petal.Length Petal.Width Species #> <num> <num> <num> <num> <fctr> #> 1: 4.9 3.0 1.4 0.2 setosa #> 2: 4.7 3.2 1.3 0.2 setosa
slice_head(a,5)
#> Sepal.Length Sepal.Width Petal.Length Petal.Width Species #> <num> <num> <num> <num> <fctr> #> 1: 5.1 3.5 1.4 0.2 setosa #> 2: 4.9 3.0 1.4 0.2 setosa #> 3: 4.7 3.2 1.3 0.2 setosa #> 4: 4.6 3.1 1.5 0.2 setosa #> 5: 5.0 3.6 1.4 0.2 setosa
slice_head(a,0.1)
#> Sepal.Length Sepal.Width Petal.Length Petal.Width Species #> <num> <num> <num> <num> <fctr> #> 1: 5.1 3.5 1.4 0.2 setosa #> 2: 4.9 3.0 1.4 0.2 setosa #> 3: 4.7 3.2 1.3 0.2 setosa #> 4: 4.6 3.1 1.5 0.2 setosa #> 5: 5.0 3.6 1.4 0.2 setosa #> 6: 5.4 3.9 1.7 0.4 setosa #> 7: 4.6 3.4 1.4 0.3 setosa #> 8: 5.0 3.4 1.5 0.2 setosa #> 9: 4.4 2.9 1.4 0.2 setosa #> 10: 4.9 3.1 1.5 0.1 setosa #> 11: 5.4 3.7 1.5 0.2 setosa #> 12: 4.8 3.4 1.6 0.2 setosa #> 13: 4.8 3.0 1.4 0.1 setosa #> 14: 4.3 3.0 1.1 0.1 setosa #> 15: 5.8 4.0 1.2 0.2 setosa
slice_tail(a,5)
#> Sepal.Length Sepal.Width Petal.Length Petal.Width Species #> <num> <num> <num> <num> <fctr> #> 1: 6.7 3.0 5.2 2.3 virginica #> 2: 6.3 2.5 5.0 1.9 virginica #> 3: 6.5 3.0 5.2 2.0 virginica #> 4: 6.2 3.4 5.4 2.3 virginica #> 5: 5.9 3.0 5.1 1.8 virginica
slice_tail(a,0.1)
#> Sepal.Length Sepal.Width Petal.Length Petal.Width Species #> <num> <num> <num> <num> <fctr> #> 1: 7.7 3.0 6.1 2.3 virginica #> 2: 6.3 3.4 5.6 2.4 virginica #> 3: 6.4 3.1 5.5 1.8 virginica #> 4: 6.0 3.0 4.8 1.8 virginica #> 5: 6.9 3.1 5.4 2.1 virginica #> 6: 6.7 3.1 5.6 2.4 virginica #> 7: 6.9 3.1 5.1 2.3 virginica #> 8: 5.8 2.7 5.1 1.9 virginica #> 9: 6.8 3.2 5.9 2.3 virginica #> 10: 6.7 3.3 5.7 2.5 virginica #> 11: 6.7 3.0 5.2 2.3 virginica #> 12: 6.3 2.5 5.0 1.9 virginica #> 13: 6.5 3.0 5.2 2.0 virginica #> 14: 6.2 3.4 5.4 2.3 virginica #> 15: 5.9 3.0 5.1 1.8 virginica
slice_max(a,Sepal.Length,10)
#> Sepal.Length Sepal.Width Petal.Length Petal.Width Species #> <num> <num> <num> <num> <fctr> #> 1: 7.6 3.0 6.6 2.1 virginica #> 2: 7.3 2.9 6.3 1.8 virginica #> 3: 7.2 3.6 6.1 2.5 virginica #> 4: 7.7 3.8 6.7 2.2 virginica #> 5: 7.7 2.6 6.9 2.3 virginica #> 6: 7.7 2.8 6.7 2.0 virginica #> 7: 7.2 3.2 6.0 1.8 virginica #> 8: 7.2 3.0 5.8 1.6 virginica #> 9: 7.4 2.8 6.1 1.9 virginica #> 10: 7.9 3.8 6.4 2.0 virginica #> 11: 7.7 3.0 6.1 2.3 virginica
slice_max(a,Sepal.Length,10,with_ties = FALSE)
#> Sepal.Length Sepal.Width Petal.Length Petal.Width Species #> <num> <num> <num> <num> <fctr> #> 1: 7.6 3.0 6.6 2.1 virginica #> 2: 7.3 2.9 6.3 1.8 virginica #> 3: 7.2 3.6 6.1 2.5 virginica #> 4: 7.7 3.8 6.7 2.2 virginica #> 5: 7.7 2.6 6.9 2.3 virginica #> 6: 7.7 2.8 6.7 2.0 virginica #> 7: 7.2 3.2 6.0 1.8 virginica #> 8: 7.4 2.8 6.1 1.9 virginica #> 9: 7.9 3.8 6.4 2.0 virginica #> 10: 7.7 3.0 6.1 2.3 virginica
slice_min(a,Sepal.Length,10)
#> Sepal.Length Sepal.Width Petal.Length Petal.Width Species #> <num> <num> <num> <num> <fctr> #> 1: 4.7 3.2 1.3 0.2 setosa #> 2: 4.6 3.1 1.5 0.2 setosa #> 3: 4.6 3.4 1.4 0.3 setosa #> 4: 4.4 2.9 1.4 0.2 setosa #> 5: 4.3 3.0 1.1 0.1 setosa #> 6: 4.6 3.6 1.0 0.2 setosa #> 7: 4.7 3.2 1.6 0.2 setosa #> 8: 4.4 3.0 1.3 0.2 setosa #> 9: 4.5 2.3 1.3 0.3 setosa #> 10: 4.4 3.2 1.3 0.2 setosa #> 11: 4.6 3.2 1.4 0.2 setosa
slice_min(a,Sepal.Length,10,with_ties = FALSE)
#> Sepal.Length Sepal.Width Petal.Length Petal.Width Species #> <num> <num> <num> <num> <fctr> #> 1: 4.7 3.2 1.3 0.2 setosa #> 2: 4.6 3.1 1.5 0.2 setosa #> 3: 4.6 3.4 1.4 0.3 setosa #> 4: 4.4 2.9 1.4 0.2 setosa #> 5: 4.3 3.0 1.1 0.1 setosa #> 6: 4.6 3.6 1.0 0.2 setosa #> 7: 4.4 3.0 1.3 0.2 setosa #> 8: 4.5 2.3 1.3 0.3 setosa #> 9: 4.4 3.2 1.3 0.2 setosa #> 10: 4.6 3.2 1.4 0.2 setosa
slice_sample(a,10)
#> Sepal.Length Sepal.Width Petal.Length Petal.Width Species #> <num> <num> <num> <num> <fctr> #> 1: 4.6 3.2 1.4 0.2 setosa #> 2: 6.4 2.9 4.3 1.3 versicolor #> 3: 4.9 3.1 1.5 0.2 setosa #> 4: 7.2 3.0 5.8 1.6 virginica #> 5: 6.7 3.1 4.7 1.5 versicolor #> 6: 7.6 3.0 6.6 2.1 virginica #> 7: 7.4 2.8 6.1 1.9 virginica #> 8: 4.9 3.6 1.4 0.1 setosa #> 9: 5.6 2.9 3.6 1.3 versicolor #> 10: 6.3 2.8 5.1 1.5 virginica
slice_sample(a,0.1)
#> Sepal.Length Sepal.Width Petal.Length Petal.Width Species #> <num> <num> <num> <num> <fctr> #> 1: 5.9 3.0 5.1 1.8 virginica #> 2: 6.3 2.5 5.0 1.9 virginica #> 3: 4.9 3.0 1.4 0.2 setosa #> 4: 6.1 2.9 4.7 1.4 versicolor #> 5: 5.1 3.4 1.5 0.2 setosa #> 6: 4.8 3.4 1.6 0.2 setosa #> 7: 5.0 3.5 1.3 0.3 setosa #> 8: 4.5 2.3 1.3 0.3 setosa #> 9: 6.7 3.1 4.4 1.4 versicolor #> 10: 5.8 2.7 5.1 1.9 virginica #> 11: 7.1 3.0 5.9 2.1 virginica #> 12: 5.0 3.0 1.6 0.2 setosa #> 13: 5.2 2.7 3.9 1.4 versicolor #> 14: 4.3 3.0 1.1 0.1 setosa #> 15: 5.0 3.6 1.4 0.2 setosa