在使用aregImpute和impute.transcan执行补偿后,我尝试只选择一个数据框。但是,我无法取回被排除在估算模型之外的变量。有人能告诉我怎么做吗?
如果我们使用以下可重现的示例来说明此问题,我如何才能获得包含所有未计算的变量的数据帧,例如Species和id变量?
data("iris")
library(missForest)
library(tidyverse)
library(Hmisc)
# example
iris.missing <- iris %>%
group_by(Species) %>%
prodNA(noNA = 0.1) %>%
ungroup() %>%
mutate(id = row_number())
imputation_model <- aregImpute(~ Sepal.Length + Sepal.Width + Petal.Width,
n.impute = 3, data = iris.missing,
pr = FALSE, type = 'pmm')
data_imp <- impute.transcan(imputation_model,
imputation = 1,
data = iris.missing,
list.out = TRUE,
pr = FALSE,
check = FALSE)
datos_imp <- bind_rows(data_imp)发布于 2021-06-07 03:37:15
没有任何函数可以为您完成此操作。你必须手工完成它们。下面是一个如何对一个数据集执行此操作的示例:
new_data <- iris.missing
new_data[, names(data_imp)] <- bind_rows(data_imp)
head(new_data)
# # A tibble: 6 x 6
# Sepal.Length Sepal.Width Petal.Length Petal.Width Species id
# <dbl> <impute> <dbl> <impute> <fct> <int>
# 1 5.1 3.5 1.4 0.2 setosa 1
# 2 4.9 3.0 1.4 0.2 NA 2
# 3 4.7 3.2 1.3 0.2 setosa 3
# 4 4.6 3.2 1.5 0.2 setosa 4
# 5 5 3.6 1.4 0.2 setosa 5
# 6 5.4 4.4 1.7 0.4 setosa 6在这里,对于所有数据集,输出数据集列表:
imps <- lapply(seq_len(3), function(i) {
data_imp <- impute.transcan(imputation_model,
imputation = i,
data = iris.missing,
list.out = TRUE,
pr = FALSE,
check = FALSE)
iris.missing[, names(data_imp)] <- bind_rows(data_imp)
iris.missing
})更常见的情况是,人们只是使用mice包来进行估算。在后续函数中使用它要容易得多。对于mice,我们只使用complete
imp <- mice::mice(iris.missing)
# one dataset at a time
imp_1 <- complete(imp)
imp_2 <- complete(imp, 2)
imp_3 <- complete(imp, 3)
# all datasets at once
imps <- lapply(1:imp$m, complete)https://stackoverflow.com/questions/67828555
复制相似问题