按ID计算NA值?

时间:2016-04-20 18:09:48

标签: r aggregate na

我现在正在从头开始学习R,我正在尝试计算给定表中NA的数量,并根据它来自的文件的ID进行汇总。然后,我想在新数据框中输出该信息,仅显示ID和其中包含的NA行的总和。我已经看过一些类似的问题,但它们似乎都处理的是非常短的数据集,而我的数据集相当长(10k +行),因此我无法调出每一行来聚合。

理想情况下,如果我从名为" Data"的数据表开始总共有四列,一列名为" ID",我想输出一个简单的数据框:

[ID] [NA_Count]

1    500

2    352

3    100

提前致谢...

1 个答案:

答案 0 :(得分:0)

以下内容应该有效,但我假设Date始终存在且Field 1和Field 2是数字:

# get file names and initialize a vector for the counts
fileNames <- list.files(<filePath>)
missRowsVec <- integer(length(fileNames))

# loop through files, get number of 
for(filePos in 1:length(fileNames)) {
  # read in files **fill in <filePath>**
  temp <- read.csv(paste0(<filePath>, fileNames[filePos]), as.is=TRUE)

  # count the number of rows with missing values,
  # ** fill in <fieldName#> with strings of variable names **
  missRowsVec[filePos]  <- sum(apply(temp[, c(<field1Name>, <field2Name>)], 
                                 function(i) anyNA(i)))
} # end loop

# build data frame
myDataFrame <- data.frame("fileNames"=fileNames, "missCount"=missRowsVec)

这可能有点密集,但它应该或多或少地起作用。尝试它的一小部分,就像一些内部函数一样,看看它是如何工作的。