查找数据框中的完整案例数,并使用每个文件中包含此类完整案例的数量创建新数据框

时间:2014-12-14 20:51:43

标签: r dataframe

我想获得给定数据框的完整案例数,并以id和nobs(特定id的完整案例数)作为列的数据框的形式显示它们。直到现在我得到了id为#10,23,45等单个数字的答案,但是对于像c(2,3,4,5)这样的数字集合我得到了所有长度的总和打印所有数字时,集合中的每个数字。所以我想知道哪里出错了。以下是我的代码。

`complete <- function(directory, id = 1:332){

 file_list <- list.files(directory, full.names=TRUE)

 tmp <- vector(mode = "list", length = length(file_list))
 for (i in seq_along(file_list)) {
 tmp[[i]] <- read.csv(file_list[[i]])
 }
 output <- do.call(rbind, tmp)

 complete <- output[complete.cases(output),]


 d<-data.frame(id,nobs=length(which(complete[,"ID"] %in% id)))
 d
  }`

由于

1 个答案:

答案 0 :(得分:0)

这尚未经过测试,所以它确实属于评论,但它只是有点太长了。

试试这个:

## not tested
directory <- "...directory with your files..."
nobs   <- sapply(list.files(directory, full.names=TRUE),
                 function(file) sum(complete.cases(read.table(file))))
result <- data.frame(id=seq_along(nobs),nobs)

我觉得这样可以用更少的代码产生你想要的结果。