step_filter {recipes} | R Documentation

## Filter rows using dplyr

### Description

`step_filter` creates a specification of a recipe step that will remove rows using `dplyr::filter()`.

### Usage

    step_filter(recipe, ..., role = NA, trained = FALSE, inputs = NULL,
      skip = FALSE, id = rand_id("filter"))

    ## S3 method for class 'step_filter'
    tidy(x, ...)

### Arguments

`recipe` | A recipe object. The step will be added to the sequence of operations for this recipe.
`...` | Logical predicates defined in terms of the variables in the data. Multiple conditions are combined with `&`. Only rows where the condition evaluates to `TRUE` are kept. See `dplyr::filter()` for more details. For the `tidy` method, these are not currently used.
`role` | Not used by this step since no new variables are created.
`trained` | A logical to indicate if the quantities for preprocessing have been estimated.
`inputs` | Quosure of values given by `...`.
`skip` | A logical. Should the step be skipped when the recipe is baked by `bake.recipe()`? While all operations are baked when `prep.recipe()` is run, some operations may not be able to be conducted on new data (e.g. processing the outcome variable(s)). Care should be taken when using `skip = TRUE` as it may affect the computations for subsequent operations
`id` | A character string that is unique to this step to identify it.
`x` | A `step_filter` object

### Details

When an object in the user's global environment is referenced in the expression defining the new variable(s), it is a good idea to use quasiquotation (e.g. `!!`) to embed the value of the object in the expression (to be portable between sessions). See the examples.

### Value

An updated version of `recipe` with the new step added to the sequence of existing steps (if any). For the `tidy` method, a tibble with columns `terms` which contains the conditional statements. These expressions are text representations and are not parsable.

### Examples

    rec <- recipe( ~ ., data = iris) %>%
      step_filter(Sepal.Length > 4.5, Species == "setosa")

    prepped <- prep(rec, training = iris %>% slice(1:75), retain = TRUE)

    library(dplyr)

    dplyr_train <-
      iris %>%
      as_tibble() %>%
      slice(1:75) %>%
      dplyr::filter(Sepal.Length > 4.5, Species == "setosa")

    rec_train <- juice(prepped)
    all.equal(dplyr_train, rec_train)

    dplyr_test <-
      iris %>%
      as_tibble() %>%
      slice(76:150) %>%
      dplyr::filter(Sepal.Length > 4.5, Species != "setosa")
    rec_test <- bake(prepped, iris %>% slice(76:150))
    all.equal(dplyr_test, rec_test)

    values <- c("versicolor", "virginica")

    qq_rec <-
      recipe( ~ ., data = iris) %>%
      # Embed the `values` object in the call using !!
      step_filter(Sepal.Length > 4.5, Species  %in% !!values)

    tidy(qq_rec, number = 1)

[Package recipes version 0.1.5 Index]