set_na_if() is a scoped variant of
set_na, where values will be replaced only
with NA's for those variables that match the logical condition of
predicate.
set_na_if(x, predicate, na, drop.levels = TRUE, as.tag = FALSE)A vector or data frame.
A predicate function to be applied to the columns. The
variables for which predicate returns TRUE are selected.
Numeric vector with values that should be replaced with NA values,
or a character vector if values of factors or character vectors should be
replaced. For labelled vectors, may also be the name of a value label. In
this case, the associated values for the value labels in each vector
will be replaced with NA. na can also be a named vector.
If as.tag = FALSE, values will be replaced only in those variables
that are indicated by the value names (see 'Examples').
Logical, if TRUE, factor levels of values that have
been replaced with NA are dropped. See 'Examples'.
Logical, if TRUE, values in x will be replaced
by tagged_na, else by usual NA values. Use a named
vector to assign the value label to the tagged NA value (see 'Examples').
x, with all values in na being replaced by NA.
If x is a data frame, the complete data frame x will
be returned, with NA's set for variables specified in ...;
if ... is not specified, applies to all variables in the
data frame.
replace_na to replace NA's with specific
values, rec for general recoding of variables and
recode_to for re-shifting value ranges. See
get_na to get values of missing values in
labelled vectors.
dummy <- data.frame(var1 = sample(1:8, 100, replace = TRUE),
var2 = sample(1:10, 100, replace = TRUE),
var3 = sample(1:6, 100, replace = TRUE))
p <- function(x) max(x, na.rm = TRUE) > 7
tmp <- set_na_if(dummy, predicate = p, na = 8:9)
head(tmp)
#> var1 var2 var3
#> 1 6 7 4
#> 2 2 6 5
#> 3 2 NA 4
#> 4 1 4 1
#> 5 3 6 3
#> 6 7 1 5