计算不包含“NA”的数据帧的行

时间:2013-01-16 23:09:16

标签: r dataframe missing-data

  

可能重复:
  R - remove rows with NAs in data.frame

我有一个从以下函数派生的数据框:

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

   csvfiles <- sprintf("/Users/myname/Desktop/%s/%03d.csv", directory, id)

   nrows <- sapply( csvfiles, function(f) nrow(read.csv(f)))

        rowlabels <- nrow(nrows)

        data.frame(id=sprintf('%3d', id), 
            nobs=sapply(csvfiles,function(x) length(count.fields(x))),
            row.names=rowlabels
           )
       }

此函数计算对象csvfiles生成的目录中包含的每个文件中的行数。然后输出一个数据框,显示文件编号以及行数(所以两列)

以为我有它,但问题是我现在必须排除每个文件中存在NA实例的行。

我如何编辑它以忽略每个文件中的那些行,只计算不存在NA的行?

1 个答案:

答案 0 :(得分:5)

替换此行:

  

nrows <- sapply( csvfiles, function(f) nrow(read.csv(f)))

使用此行,它使用complete.cases函数:

  

nrows <- sapply( csvfiles, function(f) nrow(complete.cases(read.csv(f))))

complete.cases获取一个数据框并返回一个具有相同列的数据框,但所有包含至少一个NA的行都被抛出。