Reputation: 2594
This is the glimpse() of my 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...
I want to filter (remove) all the observations with the first two levels of Epsilon using dplyr.
I mean:
DF %>% filter(Epsilon != "96002.txt" & Epsilon != "96004.txt")
However, I don't want to use the string values (i.e., "96002.txt" and "96004.txt") but the level orders (i.e., 1 and 2), because it should be a general instruction independent of the level values.
Upvotes: 21
Views: 65686
Reputation: 24510
You can easily convert a factor
into an integer
and then use conditions on it. Just replace your filter
statement with:
filter(as.integer(Epsilon)>2)
More generally, if you have a vector of indices level you want to eliminate, you can try:
#some random levels we don't want
nonWantedLevels<-c(5,6,9,12,13)
#just the filter part
filter(!as.integer(Epsilon) %in% nonWantedLevels)
Upvotes: 35