这可以很容易如下进行多元插补由链式方程 -
使用complete()
转换一个中频对象为长格式的数据。框架:
long1 <- complete(midsobj1, action='long', include=TRUE)
执行任何操作需要:
long1$new.var <- long1$chl/2
long2 <- subset(long1, age >= 5)
使用as.mids()
到后面操纵的数据转换为中频对象:
midsobj2 <- as.mids(long2)
现在你可以使用midsobj2
要求。请注意,as.mids()
需要include=TRUE
(用于包含缺少值的原始数据)才能正确压缩长格式的数据。需要注意的是小鼠中之前将有V2.25是在as.mids()中的错误函数(看到这个帖子https://stats.stackexchange.com/a/158327/69413)
编辑:根据这一答案https://stackoverflow.com/a/34859264/4269699(从什么本质上是一个重复的问题),你也可以编辑mids直接通过访问$ data和$ imp来进行响应。因此,例如
midsobj2<-midsobj1
midsobj2$data$new.var <- midsobj2$data$chl/2
midsobj2$imp$new.var <- midsobj2$imp$chl/2
你会遇到麻烦,但如果你想子集$小鬼或者如果你想使用$调用,所以我不建议一般这种解决方案。
如果你花时间创建一个[最小的,可重现的例子](http://stackoverflow.com/questions/5963269/how-to-make-a- great-r-reproducible-example)以便我们可以提供特定的代码建议。这有点过于宽泛,也不具体。 – MrFlick 2014-10-31 03:43:32
@ user20650,它确实将原始数据集存储在'imput $ data'中,但它与推测数据集是分开的。我刚刚添加了一个例子。 – 2014-10-31 04:01:13
如果你想产生'chl/2',你可以在插补之前计算它。与进行插补时相比,您添加的限制是,当缺少该列的任何插补值等于“chl/2”时 – user20650 2014-10-31 04:02:08