У меня есть mids
объект создан из mice
. Я хотел бы перекодировать некоторые вмененные переменные и сохранить объект mids
. Я знаю, что я мог бы преобразовать объект mids
в «long» с complete()
, но я хочу сохранить объект mids
, так как он имеет некоторые дополнительные возможности.recode mice mids объект
Вот пример использования набора данных nhanes
. Запуск mice()
создает 5 вмененных наборов данных для переменных в nhanes
. Я сосредоточен на hyp
.
library(mice)
names(nhanes)
nhanes$hyp
#[1] NA 1 1 NA 1 NA 1 1 1 NA NA NA 1 2 1 NA 2 2 1 2 NA 1 1 1
imp <- mice(nhanes, print = FALSE)
imp$imp$hyp
# 1 2 3 4 5
# 1 1 1 1 1 1
# 4 2 1 1 2 2
# 6 1 1 1 1 1
# 10 1 1 1 1 1
# 11 1 1 2 1 1
# 12 1 1 1 1 2
# 16 1 1 2 1 1
# 21 1 1 2 1 1
Как можно перекодировать приписываемые hyp
значения внутри mids
объекта imp
(например, 1-х стал 5-х).
Мои только идеи до сих пор включает в себя преобразование imp
долго, извлекая переменные, представляющие интерес в новую dataframe, перекодирования, преобразовывая новый dataframe через as.mids
, затем положить обратно в imp
через cbind.mids()
.
imp_long <- complete(imp, "long", include=T)
hyp <- imp_long[, "hyp"]
hyp2 <- hyp
hyp2[hyp2==1] <- 5
hyp4mids <- data.frame(.imp = rep(0:5, each = nrow(nhanes)),
.id = rep(1:nrow(nhanes), times = 6),
hyp2,
TMP = NA)
hyp4mids <- as.mids(hyp4mids, .imp = 1, .id = 2)
hyp4mids$chainMean <- hyp4mids$chainVar <- array(NA, dim = c(2, 25, 5),
dimnames = list(
c("hyp2", "TMP"),
1:25,
paste0("Chain ", 1:5)))
imp2 <- cbind.mids(imp, hyp4mids)
imp2$imp$hyp2
# 1 2 3 4 5
# 1 5 5 5 5 5
# 4 2 5 5 2 2
# 6 5 5 5 5 5
# 10 5 5 5 5 5
# 11 5 5 2 5 5
# 12 5 5 5 5 2
# 16 5 5 2 5 5
# 21 5 5 2 5 5
Это работает, но я думаю, что я должен быть в состоянии изменить hyp
в imp
середине объект непосредственно.
Возможная Дубликат [Выполнить операцию на каждом вмененный наборе данных в MICE АиР] (http://stackoverflow.com/questions/26667162/выполнения-операция-на-каждый-вмененного-набор данные-в-RS-мышей) – wjchulme