代码之家  ›  专栏  ›  技术社区  ›  omzeybek

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

  •  0
  • omzeybek  · 技术社区  · 9 年前

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

    2 回复  |  直到 9 年前
        1
  •  2
  •   dacuna    9 年前

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

    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
    

    所以,总结确实使用了na。rm=T,最后一个结果是NA的计数(在我的示例中,NA=1)。

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

        2
  •  1
  •   Molx    9 年前

    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被过滤掉,如果有,则将其计数相加。