右(或左)边修剪平均值

标签 r

使用:

mean (x, trim=0.05)

从分布的每一侧移除 2.5%,这对于对称的双尾数据来说很好。但是如果我有一个尾部或高度不对称的数据,我希望能够只删除分布的一侧。有没有这个功能,还是我自己写了一个新的?如果是这样,如何?

最佳答案

只需创建一个修改后的 mean.default。先看mean.default :

mean.default

然后修改它以接受新参数:
mean.default <- 
function (x, trim = 0, na.rm = FALSE, ..., side="both") 
{
    if (!is.numeric(x) && !is.complex(x) && !is.logical(x)) {
        warning("argument is not numeric or logical: returning NA")
        return(NA_real_)
    }
    if (na.rm) 
        x <- x[!is.na(x)]
    if (!is.numeric(trim) || length(trim) != 1L) 
        stop("'trim' must be numeric of length one")
    n <- length(x)
    if (trim > 0 && n) {
        if (is.complex(x)) 
            stop("trimmed means are not defined for complex data")
        if (any(is.na(x))) 
            return(NA_real_)
        if (trim >= 0.5) 
            return(stats::median(x, na.rm = FALSE))
        lo <- if( side=="both" || side=="right" ){ floor(n * trim) + 1 }else{1}
        hi <- if( side=="both" || side=="left" ){ n + 1 - (floor(n * trim) + 1 ) }else{ n}
        x <- sort.int(x, partial = unique(c(lo, hi)))[lo:hi]
      cat(c(length(x), lo , hi) )
    }
    .Internal(mean(x))
}

关于右(或左)边修剪平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21069463/

相关文章:

R 正则表达式 : removing only the immediate following character after >

javascript - 添加元素后触发 JavaScript 代码

r - 表中的重复行与值具有列参数的次数相同(在 R 或 Excel 中)

R Shiny : async downloadHandler

R - 多个嵌套循环

r - 在r中将数字读取为单个字符

r - ggplot2:添加描述散点图两个维度的条件密度曲线

r - ggplot删除特定的x轴标签

html - 计算 R 中前 10 名最常见作者的最佳方法

r - 在第一个以大写字母开头的单词后添加逗号