web-dev-qa-db-fra.com

Niveaux de facteur de filtre dans R à l'aide de dplyr

Voici l'aperçu () de mon dataframe DF:

Observations: 221184
Variables:
$ Epsilon    (fctr) 96002.txt, 96002.txt, 96004.txt, 96004.txt, 96005.txt, 960...
$ Value   (int) 61914, 61887, 61680, 61649, 61776, 61800, 61753, 61725, 616...

Je veux filtrer (supprimer) toutes les observations avec les deux premiers niveaux d'Epsilon en utilisant dplyr.

Je veux dire:

DF %>% filter(Epsilon != "96002.txt" & Epsilon != "96004.txt")

Cependant, je ne veux pas utiliser les valeurs de chaîne (c.-à-d. "96002.txt" et "96004.txt") mais les ordres de niveau (c.-à-d. 1 et 2), car ce devrait être une instruction générale indépendante du niveau valeurs.

11

Vous pouvez facilement convertir un factor en integer, puis utiliser des conditions dessus. Remplacez simplement votre instruction filter par:

 filter(as.integer(Epsilon)>2)

Plus généralement, si vous avez un vecteur de niveau d'indices que vous souhaitez éliminer, vous pouvez essayer:

 #some random levels we don't want
 nonWantedLevels<-c(5,6,9,12,13)
 #just the filter part
 filter(!as.integer(Epsilon) %in% nonWantedLevels)
19
nicola