使用dplyr排除异常值的平均值
我想知道是否有一种方法可以使用R中的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
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所提到的,你可能需要考虑如何定义离群值。