J'ai une trame de données qui a 5 variables et 800 lignes:Recherche et supprimer les valeurs aberrantes d'une trame de données regroupées par une variable
head(df)
V1 variable value element OtolithNum
1 24.9835 V7 130230.0 Mg 25
2 24.9835 V8 145844.0 Mg 25
3 24.9835 V9 126126.0 Mg 25
4 24.9835 V10 103152.0 Mg 25
5 24.9835 V11 129571.9 Mg 25
6 24.9835 V12 114214.0 Mg 25
je dois effectuer les opérations suivantes:
- identifier tous les les valeurs (à partir de la variable "valeur") qui sont> 2 écarts types par rapport à la médiane, groupés par la variable d'élément.
- supprimer les valeurs aberrantes à partir de la trame de données (ou créer une nouvelle trame de données avec les valeurs aberrantes exclus.
J'utilise paquet dplyr et ont utilisé le code suivant à un groupe par la variable « élément », et fournir le des valeurs moyennes:
df1=df %>%
group_by(element) %>%
summarise_each(funs(mean), value)
Pouvez-vous s'il vous plaît me aider à manipuler le code ou ajouter ci-dessus afin d'éliminer les valeurs aberrantes (définis ci-dessus,> 2 SD de la médiane) regroupés par la variable « élément », avant extrais les moyens
J'ai essayé le code suivant d'un autre poste (c'est pourquoi les noms de données ne correspondent pas à mes données personnelles ci-dessus), sans chance:
#standardize each column (we use it in the outdet function)
scale(dat)
#create function that looks for values > +/- 2 sd from mean
outdet <- function(x) abs(scale(x)) >= 2
#index with the function to remove those values
dat[!apply(sapply(dat, outdet), 1, any), ]
Vous devrez peut-être vérifier http://stackoverflow.com/questions/26769976/mean-excluding-outliers-using-dplyr – akrun
Vous devriez être averti que c'est statistiquement absurde. –