我想知道是否有办法使用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)
谢谢!
答案 0 :(得分:4)
使用outlier
包的一种方式就是这样。
library(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