首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >recode小鼠mids对象

recode小鼠mids对象
EN

Stack Overflow用户
提问于 2016-01-17 18:09:31
回答 1查看 1.7K关注 0票数 4

我有一个由mids创建的mice对象。我想重新编码一些已估算的变量,并保留mids对象。我知道可以使用midscomplete()对象转换为"long“,但是我希望保留mids对象,因为它还有一些其他用途。

下面是一个使用nhanes数据集的示例。运行mice()将为nhanes中的变量创建5个估算数据集。我关注的是hyp

代码语言:javascript
复制
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对象imp (例如,1变成5)中重新编码计算出来的imp值。

到目前为止,我唯一的想法是将imp转换为long,将感兴趣的变量提取为新的数据帧,重新编码,通过as.mids转换新的数据,然后通过cbind.mids()返回到imp中。

代码语言:javascript
复制
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

它可以工作,但我认为我应该能够直接修改imp mids对象中的imp

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-18 16:13:46

看来诀窍是修改$data和$imp:

代码语言:javascript
复制
imp <- mice(nhanes, print = FALSE)
l1 <- complete(imp, "long") 
table(l1$hyp)
# 1  2 
#92 33 

imp$data$hyp[imp$data$hyp==1] <- 5
imp$imp$hyp[imp$imp$hyp==1] <- 5
l2 <- complete(imp, "long")
table(l2$hyp)
# 2  5 
#33 92 
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34841794

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档