Skip to contents

data_relocate() will reorder columns to specific positions, indicated by before or after. data_reorder() will instead move selected columns to the beginning of a data frame. Finally, data_remove() removes columns from a data frame. All functions support select-helpers that allow flexible specification of a search pattern to find matching columns, which should be reordered or removed.

Usage

data_relocate(
  data,
  select,
  before = NULL,
  after = NULL,
  ignore_case = FALSE,
  verbose = TRUE,
  ...
)

data_reorder(data, select, ignore_case = FALSE, verbose = TRUE, ...)

data_remove(data, select, ignore_case = FALSE, verbose = FALSE, ...)

Arguments

data

A data frame.

select

Variables that will be included when performing the required tasks. Can be either

  • a variable specified as a literal variable name (e.g., column_name),

  • a string with the variable name (e.g., "column_name"), or a character vector of variable names (e.g., c("col1", "col2", "col3")),

  • a formula with variable names (e.g., ~column_1 + column_2),

  • a vector of positive integers, giving the positions counting from the left (e.g. 1 or c(1, 3, 5)),

  • a vector of negative integers, giving the positions counting from the right (e.g., -1 or -1:-3),

  • one of the following select-helpers: starts_with(""), ends_with(""), contains(""), a range using : or regex(""),

  • or a function testing for logical conditions, e.g. is.numeric() (or is.numeric), or any user-defined function that selects the variables for which the function returns TRUE (like: foo <- function(x) mean(x) > 3),

  • ranges specified via literal variable names, select-helpers (except regex()) and (user-defined) functions can be negated, i.e. return non-matching elements, when prefixed with a -, e.g. -ends_with(""), -is.numeric or -Sepal.Width:Petal.Length. Note: Negation means that matches are excluded, and thus, the exclude argument can be used alternatively. For instance, select=-ends_with("Length") (with -) is equivalent to exclude=ends_with("Length") (no -). In case negation should not work as expected, use the exclude argument instead.

If NULL, selects all columns. Patterns that found no matches are silently ignored, e.g. find_columns(iris, select = c("Species", "Test")) will just return "Species".

before, after

Destination of columns. Supplying neither will move columns to the left-hand side; specifying both is an error. Can be a character vector, indicating the name of the destination column, or a numeric value, indicating the index number of the destination column. If -1, will be added before or after the last column.

ignore_case

Logical, if TRUE and when one of the select-helpers or a regular expression is used in select, ignores lower/upper case in the search pattern when matching against variable names.

verbose

Toggle warnings.

...

Arguments passed down to other functions. Mostly not used yet.

Value

A data frame with reordered columns.

See also

Examples

# Reorder columns
head(data_relocate(iris, select = "Species", before = "Sepal.Length"))
#>   Species Sepal.Length Sepal.Width Petal.Length Petal.Width
#> 1  setosa          5.1         3.5          1.4         0.2
#> 2  setosa          4.9         3.0          1.4         0.2
#> 3  setosa          4.7         3.2          1.3         0.2
#> 4  setosa          4.6         3.1          1.5         0.2
#> 5  setosa          5.0         3.6          1.4         0.2
#> 6  setosa          5.4         3.9          1.7         0.4
head(data_relocate(iris, select = "Species", before = "Sepal.Width"))
#>   Sepal.Length Species Sepal.Width Petal.Length Petal.Width
#> 1          5.1  setosa         3.5          1.4         0.2
#> 2          4.9  setosa         3.0          1.4         0.2
#> 3          4.7  setosa         3.2          1.3         0.2
#> 4          4.6  setosa         3.1          1.5         0.2
#> 5          5.0  setosa         3.6          1.4         0.2
#> 6          5.4  setosa         3.9          1.7         0.4
head(data_relocate(iris, select = "Sepal.Width", after = "Species"))
#>   Sepal.Length Petal.Length Petal.Width Species Sepal.Width
#> 1          5.1          1.4         0.2  setosa         3.5
#> 2          4.9          1.4         0.2  setosa         3.0
#> 3          4.7          1.3         0.2  setosa         3.2
#> 4          4.6          1.5         0.2  setosa         3.1
#> 5          5.0          1.4         0.2  setosa         3.6
#> 6          5.4          1.7         0.4  setosa         3.9
# same as
head(data_relocate(iris, select = "Sepal.Width", after = -1))
#>   Sepal.Length Petal.Length Petal.Width Species Sepal.Width
#> 1          5.1          1.4         0.2  setosa         3.5
#> 2          4.9          1.4         0.2  setosa         3.0
#> 3          4.7          1.3         0.2  setosa         3.2
#> 4          4.6          1.5         0.2  setosa         3.1
#> 5          5.0          1.4         0.2  setosa         3.6
#> 6          5.4          1.7         0.4  setosa         3.9

# reorder multiple columns
head(data_relocate(iris, select = c("Species", "Petal.Length"), after = "Sepal.Width"))
#>   Sepal.Length Sepal.Width Species Petal.Length Petal.Width
#> 1          5.1         3.5  setosa          1.4         0.2
#> 2          4.9         3.0  setosa          1.4         0.2
#> 3          4.7         3.2  setosa          1.3         0.2
#> 4          4.6         3.1  setosa          1.5         0.2
#> 5          5.0         3.6  setosa          1.4         0.2
#> 6          5.4         3.9  setosa          1.7         0.4
# same as
head(data_relocate(iris, select = c("Species", "Petal.Length"), after = 2))
#>   Sepal.Length Sepal.Width Species Petal.Length Petal.Width
#> 1          5.1         3.5  setosa          1.4         0.2
#> 2          4.9         3.0  setosa          1.4         0.2
#> 3          4.7         3.2  setosa          1.3         0.2
#> 4          4.6         3.1  setosa          1.5         0.2
#> 5          5.0         3.6  setosa          1.4         0.2
#> 6          5.4         3.9  setosa          1.7         0.4

# Reorder columns
head(data_reorder(iris, c("Species", "Sepal.Length")))
#>   Species Sepal.Length Sepal.Width Petal.Length Petal.Width
#> 1  setosa          5.1         3.5          1.4         0.2
#> 2  setosa          4.9         3.0          1.4         0.2
#> 3  setosa          4.7         3.2          1.3         0.2
#> 4  setosa          4.6         3.1          1.5         0.2
#> 5  setosa          5.0         3.6          1.4         0.2
#> 6  setosa          5.4         3.9          1.7         0.4
head(data_reorder(iris, c("Species", "dupa"))) # Safe for non-existing cols
#> Warning: Following variable(s) were not found: dupa
#>   Species Sepal.Length Sepal.Width Petal.Length Petal.Width
#> 1  setosa          5.1         3.5          1.4         0.2
#> 2  setosa          4.9         3.0          1.4         0.2
#> 3  setosa          4.7         3.2          1.3         0.2
#> 4  setosa          4.6         3.1          1.5         0.2
#> 5  setosa          5.0         3.6          1.4         0.2
#> 6  setosa          5.4         3.9          1.7         0.4

# Remove columns
head(data_remove(iris, "Sepal.Length"))
#>   Sepal.Width Petal.Length Petal.Width Species
#> 1         3.5          1.4         0.2  setosa
#> 2         3.0          1.4         0.2  setosa
#> 3         3.2          1.3         0.2  setosa
#> 4         3.1          1.5         0.2  setosa
#> 5         3.6          1.4         0.2  setosa
#> 6         3.9          1.7         0.4  setosa
head(data_remove(iris, starts_with("Sepal")))
#>   Petal.Length Petal.Width Species
#> 1          1.4         0.2  setosa
#> 2          1.4         0.2  setosa
#> 3          1.3         0.2  setosa
#> 4          1.5         0.2  setosa
#> 5          1.4         0.2  setosa
#> 6          1.7         0.4  setosa