J'ai une trame de données (df) comme suit:R: détection itératives valeurs aberrantes
V V1 V2 V3
1 A B 32
1 A C 33
1 A E 43
1 A F 22
1 A T 53
1 A N 54
1 C T 44
1 C G 11
1 C N 31
1 C D 53
1 C U 75
1 A T 53
1 A N 54
2 C T 42
2 C G 14
2 C N 35
2 C D 23
2 C U 56
Que veux-je faire pour obtenir les valeurs aberrantes pour chaque combinaison de (V, V1), ce qui est facile à atteindre avec le code que j'ai.
d <- as.data.table(df)
# Add a column to keep track of row numbers
d[, c('row'):= list(seq_len(nrow(d)))]
# For each group (combination of V and V1), perform the outlier test
outliers <- d[, chisq.out.test(V3), list(V, V1)]
Le principal problème est que cette fonction serait de retour pour chaque combinaison de (V,V1
) qu'à une valeur aberrante avec une valeur p. Ce dont j'ai besoin est fondamentalement tous les aberrants avec leur p-valeur d'être aberrants pour chacun (V,V1
) ou en d'autres termes, tous les candidats de V2
avec leur p-valeur d'être un aberrant à (V,V1
).
Des idées comment puis-je changer mon code pour le faire?
merci pour votre réponse, je mets à jour la fonction afin qu'elle puisse renvoyer les scores aberrants avec V, V1. Mais à la fin, comment puis-je obtenir le numéro de ligne correspondant à chaque valeur aberrante? donc je peux obtenir quelle V2 est la valeur aberrante pour chaque V, V1. parole est la fonction comme suit: 'valeurs aberrantes <- d [, chute de tension (V3), la liste (V, V1)] valeurs aberrantes <- fusion (valeurs aberrantes, d [, liste (max.ind = rangée [qui .max (V3)]), liste (V, V1)], par = c ('V', 'V1')) ' mais cela ne me donnerait que l'indice de ligne du max, je veux pour chaque aberrante le index de ligne. – ifreak
@ifreak 'ave' renvoie les valeurs dans le même ordre que les a trouvées. Vous pouvez donc simplement le rajouter au fichier data.frame, 'dd $ do <- avec (dd, ave (V3, V1, V2, FUN = abandon))'. – MrFlick
maintenant im ayant une erreur bizarre dans le temps («valeur manquante où TRUE/FALSE nécessaire»). As-tu une idée pourquoi? – ifreak