使用dplyr排除异常值的平均值

使用dplyr排除异常值的平均值,r,statistics,R,Statistics,我想知道是否有一种方法可以使用R中的dplyr包计算排除异常值的平均值?我试图做类似的事情,但没有成功: library(dplyr) w = rep("months", 4) value = c(1, 10, 12, 9) df = data.frame(w, value) output = df %>% group_by(w) %>% summarise(m = mean(value, na.rm = T, outlier = T)) 所以在上面的例子中,输出应该是10.333

我想知道是否有一种方法可以使用R中的dplyr包计算排除异常值的平均值?我试图做类似的事情,但没有成功:

library(dplyr)
w = rep("months", 4)
value = c(1, 10, 12, 9)
df = data.frame(w, value)
output = df %>% group_by(w) %>% summarise(m = mean(value, na.rm = T, outlier = T))
所以在上面的例子中,输出应该是10.333(平均值10,12和9),而不是8(平均值1,10,12和9)


谢谢

一种方法是使用
outlier
包执行类似操作

library(outliers) #containing function outlier
library(dplyr)

df %>%
    group_by(w) %>%
    filter(!value %in% c(outlier(value))) %>%
    summarise(m = mean(value, na.rm = TRUE))

#       w        m
#1 months 10.33333

为什么我们会认为1是一个异常值?@BondedDust啊..我应该定义它。就我而言,离群值是与平均值差异最大的值。@PrakharMehrotra谢谢您的评论。我很高兴听到这是有益的。一个音符。正如BondedDust所提到的,你可能需要考虑如何定义离群值。