qoiqpwqr 发表于 2012-2-13 21:52
for (x1 in a1) {
Rdata1
library(foreign)
setwd("E:/SAS data/新建文件夹 csv")
a1<-list.files()
Rdata <- list()
for (i in seq_along(a1)) {
Rdata[[ i ]] <- read.csv(a1[ i ])
print(Rdata[[ i ]])
}
#用EMB对Rdata1进行填补
>library(Amelia)
Rdata.out <- list()
Rdata.rest <- list()
for (i in seq_along(a1)) {
d1 <- subset(Rdata[[ i ]], d == 1)
Rdata.rest[[ i ]] <- subset(Rdata[[ i ]], d == 0)
Rdata.out[[ i ]] <- amelia(x=d1,m=5..."))
write.amelia(obj=Rdata.out[[ i ]],file.stem="E:/Rdata/impute",format = "csv")
}
Rdata.imp <-rbind(do.call(rbind,Rdata.out),do.call(rbind,Rdata.rest)
最后一句好像有问题,总是提示:错误于rbind(deparse.level, ...) : 变量的列数不对!
现在的主要问题是:填补时我选择的填补次数是5次,例如对于第一个数据集final1,我们会针对该数据集里d=1个体中的所有缺失数据都填补5次,其他非缺失数据不变;这样final1就会产出5个填补好的数据集,然后这5个由final1得出填补数据集再分别加上相同的d=0个体的数据(也是final1中的)最后得出完整的数据集以备分析,以此类推...我给出的例子是6个,其实这样的数据我模拟产生了100个...
我这里用的是笨办法,把数据集先拆开填补,然后在合并,好像版主的程序更简单,只是我实在不知道接下来该如何编才能完成我的意图,我倒是愿意再追加悬赏论坛币以求解决,非常感谢!