This function takes a `mids`

object and returns a new
`mids`

object that pertains to the subset of the data
identified by the expression in .... The expression may use
column values from the incomplete data in `.data$data`

.

## Usage

```
# S3 method for mids
filter(.data, ..., .preserve = FALSE)
```

## Arguments

- .data
A

`mids`

object.- ...
Expressions that return a logical value, and are defined in terms of the variables in

`.data$data`

. If multiple expressions are specified, they are combined with the`&`

operator. Only rows for which all conditions evaluate to`TRUE`

are kept.- .preserve
Relevant when the

`.data`

input is grouped. If`.preserve = FALSE`

(the default), the grouping structure is recalculated based on the resulting data, otherwise the grouping is kept as is.

## Note

The function calculates a logical vector `include`

of length `nrow(.data$data)`

.
The function constructs the elements of the filtered `mids`

object as follows:

`data` | Select rows in `.data$data` for which `include == TRUE` |

`imp` | Select rows each imputation `data.frame` in `.data$imp` for which `include == TRUE` |

`m` | Equals `.data$m` |

`where` | Select rows in `.data$where` for which `include == TRUE` |

`blocks` | Equals `.data$blocks` |

`call` | Equals `.data$call` |

`nmis` | Recalculate `nmis` based on the selected `data` rows |

`method` | Equals `.data$method` |

`predictorMatrix` | Equals `.data$predictorMatrix` |

`visitSequence` | Equals `.data$visitSequence` |

`formulas` | Equals `.data$formulas` |

`post` | Equals `.data$post` |

`blots` | Equals `.data$blots` |

`ignore` | Select positions in `.data$ignore` for which `include == TRUE` |

`seed` | Equals `.data$seed` |

`iteration` | Equals `.data$iteration` |

`lastSeedValue` | Equals `.data$lastSeedValue` |

`chainMean` | Set to `NULL` |

`chainVar` | Set to `NULL` |

`loggedEvents` | Equals `.data$loggedEvents` |

`version` | Replaced with current version |

`date` | Replaced with current date |

## Examples

```
imp <- mice(nhanes, m = 2, maxit = 1, print = FALSE)
# example with external logical vector
imp_f <- filter(imp, c(rep(TRUE, 13), rep(FALSE, 12)))
nrow(complete(imp))
#> [1] 25
nrow(complete(imp_f))
#> [1] 13
# example with calculated include vector
imp_f2 <- filter(imp, age >= 2 & hyp == 1)
nrow(complete(imp_f2)) # should be 5
#> [1] 5
```