2014-11-06 2 views
1

R에서 dplyr 패키지를 사용하여 평균치를 계산하는 방법이 있는지 궁금합니다. 내가 이런 일을하려고했지만 작동하지 않았다 :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 대신 8의 (10의 12 & 9를 의미)이어야한다 (1, 10의 의미, 12, 9)

감사!

+0

왜 우리는 왜 1이 이상치라고 생각합니까? –

+0

@BondedDust Ah .. 내가 정의 했어야 했어. 나의 목적을 위해 이상 치는 평균치와 최대 차이가있는 값입니다. –

답변

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 
+0

감사합니다! 이것은 완벽하게 작동합니다 –

+0

@PrakharMehrotra 귀하의 의견에 감사드립니다. 이것이 도움이된다는 소식을 듣고 기쁩니다. 하나의 메모. BondedDust에서 언급했듯이 이상 치를 정의하는 방법을 고려해야 할 수도 있습니다. – jazzurro