R 的 summary() 函数计算背后的理性

Rational behind R's summary() functions calculations

R 的 summary() 函数在计算平均值时是否排除了 NA 值。虽然我试图从帮助文档中查找信息,但我无法找到答案。

是的,确实如此,看这个例子:

x1 <- c(1, 4, 3, NA, 7)
summary(x1)

输出:

   Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
   1.00    2.50    3.50    3.75    4.75    7.00       1 

现在看:

mean(x1)
> [1] NA

和:

mean(x1, na.rm=T)
[1] 3.75

所以,summary确实用了na.rm=T来统计,最后的结果就是NA的计数(在我的例子中NA的=1)。

示例取自:http://www.ats.ucla.edu/stat/r/faq/missing.htm

ddsu 的回答表明确实如此,但这是它是如何做到的。检查 summary.default 源代码。从第 14 行开始:

else if (is.numeric(object)) {
    nas <- is.na(object)
    object <- object[!nas]
    qq <- stats::quantile(object)
    qq <- signif(c(qq[1L:3L], mean(object), qq[4L:5L]), digits)
    names(qq) <- c("Min.", "1st Qu.", "Median", "Mean", "3rd Qu.", 
                   "Max.")
    if (any(nas)) 
      c(qq, `NA's` = sum(nas))
    else qq
  }

所以在计算值之前,NA 被过滤掉,然后如果有的话,他们的计数被添加。