For imputing fixed factor levels. It adds the new imputed value to the end
of the levels of the vector. We generally recommend to impute using other
model based approaches. See the simputation
package, for example
simputation::impute_lm()
.
Usage
impute_factor(x, value)
# Default S3 method
impute_factor(x, value)
# S3 method for class 'factor'
impute_factor(x, value)
# S3 method for class 'character'
impute_factor(x, value)
# S3 method for class 'shade'
impute_factor(x, value)
Examples
vec <- factor(LETTERS[1:10])
vec[sample(1:10, 3)] <- NA
vec
#> [1] A B C D E <NA> G <NA> I <NA>
#> Levels: A B C D E F G H I J
impute_factor(vec, "wat")
#> [1] A B C D E wat G wat I wat
#> Levels: A B C D E F G H I J wat
library(dplyr)
dat <- tibble(
num = rnorm(10),
int = rpois(10, 5),
fct = factor(LETTERS[1:10])
) %>%
mutate(
across(
everything(),
\(x) set_prop_miss(x, prop = 0.25)
)
)
dat
#> # A tibble: 10 × 3
#> num int fct
#> <dbl> <int> <fct>
#> 1 0.0742 4 A
#> 2 -0.201 NA B
#> 3 1.51 NA C
#> 4 NA 4 D
#> 5 NA 3 E
#> 6 1.37 6 NA
#> 7 1.06 3 G
#> 8 -1.00 3 NA
#> 9 0.880 4 I
#> 10 0.987 7 J
dat %>%
nabular() %>%
mutate(
num = impute_fixed(num, -9999),
int = impute_zero(int),
fct = impute_factor(fct, "out")
)
#> # A tibble: 10 × 6
#> num int fct num_NA int_NA fct_NA
#> <dbl> <dbl> <fct> <fct> <fct> <fct>
#> 1 0.0742 4 A !NA !NA !NA
#> 2 -0.201 0 B !NA NA !NA
#> 3 1.51 0 C !NA NA !NA
#> 4 -9999 4 D NA !NA !NA
#> 5 -9999 3 E NA !NA !NA
#> 6 1.37 6 out !NA !NA NA
#> 7 1.06 3 G !NA !NA !NA
#> 8 -1.00 3 out !NA !NA NA
#> 9 0.880 4 I !NA !NA !NA
#> 10 0.987 7 J !NA !NA !NA