【问题标题】:How do I add sd field to to the summary of a numeric vector?如何将 sd 字段添加到数字向量的摘要中?
【发布时间】:2015-03-02 22:51:58
【问题描述】:

summary.default 方法计算最小值、最大值、平均值、中位数、第一和第三分位数。 如何在表格中添加sd

附言。我可以定义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 之前。当summary.default 中的signif 过于激进时,这也是错误

> 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 

这真的是最好的吗?

【问题讨论】:

    标签: r


    【解决方案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 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-20
      • 2018-10-09
      • 1970-01-01
      相关资源
      最近更新 更多