summary.default
方法计算min,max,mean,median,1st和3rd分位数。
如何将sd
添加到表格中?
PS。我可以定义summary.numeric
:
summary.numeric <- function (v) {
s <- summary.default(v)
s <- signif(c(s,sd(v)),3)
names(s)[length(s)] <- "sd"
s
}
如果我想正确处理digits
参数,将"sd"
放在NA's
&amp; c之前,这会变得更加丑陋。当signif
中的summary.default
过于激进时,这也是错误:
> v
[1] 0.9876721 0.9902479 0.9899369 0.9882979 0.9898442 0.9956581 0.9884242
[8] 0.9897999 0.9887597 0.9895176
> summary(v)
Min. 1st Qu. Median Mean 3rd Qu. Max. sd
0.98800 0.98800 0.99000 0.99000 0.99000 0.99600 0.00222
这真的是最好的吗?
答案 0 :(得分:1)
我建议从summary.default
中提取并重写相关的源代码,而不是试图围绕它编写包装器:
# Borrows some code from summary.default
summary.numeric <- function (object,digits = max(3L, getOption("digits")-3L)) {
nas <- is.na(object)
object <- object[!nas]
qq <- stats::quantile(object)
qq <- signif(c(qq[1L:3L], mean(object), qq[4L:5L], sd(object)), digits)
names(qq) <- c("Min.", "1st Qu.", "Median", "Mean", "3rd Qu.", "Max.", "sd")
if (any(nas))
c(qq, `NA's` = sum(nas))
else qq
}
使用示例:
set.seed(1)
summary(c(NA,runif(10)))
# Min. 1st Qu. Median Mean 3rd Qu. Max. sd NA's
# 0.06179 0.29220 0.60100 0.55150 0.83900 0.94470 0.31570 1.00000