无法在每个数据文件中获得完全观察到的案例

时间:2019-01-12 16:22:11

标签: r dataframe case rbind complete

问题是要我编写一个函数,该函数读取一个充满文件的目录,并报告每个数据文件中完全观察到的病例数。我的代码可以读取数据,但无法获取每个数据文件的缺失值数量。对于所有332个文件,它仅返回一种情况。

我认为问题可能是我只得到了最后一个完整的案件,而不是全部。但是我不知道应该使用哪种方法编写代码。

complete<-function(directory, id=1:332){
    directory<-setwd("/Users/apple/Desktop/R coursera/specdata")
    hwData<-numeric()
    for (i in id){
            if (i<100 & i>=10){
                    hwData<-read.csv(paste("0",as.character(i),  ".csv",sep = ""), header = TRUE, sep = "", na.strings = c("NA","NAN"," "))

            }
            else if (i<10){
                    hwData<-read.csv(paste("0","0",as.character(i),".csv",sep = ""), header = TRUE, sep = "", na.strings = c("NA","NAN"," "))

            }
            else{
                    hwData<-read.csv(paste(as.character(i),".csv",sep = ""),header=TRUE,sep = "", na.strings = c("NA","NAN"," "))
            }

            nobs<-sum(complete.cases(hwData))
            dFrame<-data.frame(id,nobs=rbind(sum(complete.cases(hwData))))
    }
    return(dFrame)
}


I got:
> complete("specdata",30:25)
  id nobs
1 30 3287
2 29 3287
3 28 3287
4 27 3287
5 26 3287
6 25 3287

1 个答案:

答案 0 :(得分:0)

在循环外启动一个空的数据框:

dFrame <- data.frame()

然后,循环将其与自身+新行绑定:

dFrame <- rbind(
  dFrame, 
  data.frame(id = i, nobs = sum(complete.cases(hwData)))
)

请注意,您必须将循环变量i分配给ID。 检查此解决方案,让我知道它是否有效。