这可以很容易地完成如下 -
用于complete()
将 mids 对象转换为长格式 data.frame:
long1 <- complete(midsobj1, action='long', include=TRUE)
执行所需的任何操作:
long1$new.var <- long1$chl/2
long2 <- subset(long1, age >= 5)
用于as.mids()
将操作数据转换回 mids 对象:
midsobj2 <- as.mids(long2)
现在您可以midsobj2
根据需要使用。请注意,正确压缩长格式数据include=TRUE
需要(用于包含具有缺失值的原始数据) 。as.mids()
请注意,在鼠标 v2.25 之前,as.mids() 函数中有一个错误(请参阅这篇文章https://stats.stackexchange.com/a/158327/69413)
编辑:根据这个答案https://stackoverflow.com/a/34859264/4269699(从本质上是一个重复的问题),您还可以通过访问 $data 和 $imp 直接编辑 mids 对象。所以例如
midsobj2<-midsobj1
midsobj2$data$new.var <- midsobj2$data$chl/2
midsobj2$imp$new.var <- midsobj2$imp$chl/2
如果你想对 $imp 进行子集化或者你想使用 $call,你会遇到麻烦,所以我一般不会推荐这个解决方案。