library(foreign)
setwd("E:/SAS data")#指定路径
a1<-list.files()
a1
[1] "final1csv" "final2csv" "final3csv"
"final4csv" "final5csv" "final6csv"#文件夹内共有6个数据集(模拟生成,均包含相同变量,其中变量y包含缺失数据)
for (x1 in a1) {
Rdata1<-read.csv(x1)
print(Rdata1)
} #读入这6个csv格式数据集
到现在为止运行没有任何问题,问题在下面的程序:
library(Amelia) #对Rdata1中这6个数据集的y用amelia这个包进行填补
for (x1 in a1) {
while(d==1) [s:16]#这一步有个问题,由于d是数据集中的二分类变量:0和1,我想用d=1的个体的数 据对y进行填补(用下面的amelia),而d=0的那些个体的全部数据都不用,但是输出时要保留。估计这句写得不对,因为提示错误了...(见底部)
Rdata1.out<-amelia(x=Rdata1,m=5,p2s=0,startvals=0,logs="y",
idvars = c("rho", "nu","Rnum","y0","d0","c","d","y1","rind"))
write.amelia(obj=Rdata1.out,file.stem="E:/Rdata/Rdata",format = "csv")#[s:16]这里存在个问题就是write.amelia输出的只有"final6csv"1个数据集的填补结果,但我想要的是这6个数据集的结果,请问这里应该怎么编写程序啊?
print(Rdata1.out)[s:16]还有这里也是只出来一个数据集的结果,怎么才能6个都出来
}
这段程序运行后出现:错误: 找不到对象'd'
这段程序最终想要的结果就是给每个数据集填补5次,这样每个数据集最后生成一个文件夹,共6个,每个夹子里面都有5个填补好的数据集(填补就是用amelia就解决了)
别嫌我啰嗦,主要也是希望尽量吧问题给大家解释清楚,可能有些问题有些简单,但我现在真是需要大家的帮助,非常感谢!