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)。
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 被过滤掉,然后如果有的话,他们的计数被添加。
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)。
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 被过滤掉,然后如果有的话,他们的计数被添加。