2015-03-02 24 views
2

summary.default方法計算最小值,最大值,平均值,中位數,第一和第三分位數。 如何將sd添加到表格中?如何將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 &℃。這也是錯誤signifsummary.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 

這真的是最好的人能做到?

回答

1

我建議提取並summary.default重寫相關的源代碼,而不是試圖寫它周圍的包裝:

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 

# 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 
} 

使用示例

相關問題