web-dev-qa-db-fra.com

R dplyr - filtrer par plusieurs conditions

J'ai data.frame comme ci-dessous

ID  country age
1   X   83
2   X   15
3   Y   2
4   Y   12
5   X   2
6   Y   2
7   Y   18
8   X   85

Je dois filtrer les lignes pour les moins de 10 ans et en même temps au-dessus de 80 ans. Comment puis-je le faire de la manière la plus simple? Pour une condition, je peux utiliser filter(data.frame, age > 80) mais je ne sais pas comment le faire pour deux conditions en même temps?

6
anba

Ce qui suit peut également vous aider ici en utilisant dplyr

library(dplyr)
##Creating variable dat here which has values in it.
dat <- read.table(text = "ID country age
1   X   83
2   X   15
3   Y   2
4   Y   12
5   X   2
6   Y   2
7   Y   18
8   X   85",
                  header = TRUE)

dat %>%
  filter(age<10 | age>80)
5
RavinderSingh13

Je ne suis pas sûr de la question si vous voulez les valeurs entre 10 et 80 ou celles en dessous de dix et au-dessus de 80. Si vous voulez celles entre, vous pouvez mettre plusieurs arguments dans filter. Si vous voulez ceux en dessous de 10 et au-dessus de 80, vous pouvez utiliser | comme opérateur "ou":

library(tidyverse)

data %>%
  filter(age > 10,
         age < 80)

data %>%
  filter(age < 10 | age > 80)
3
Ben G
        dat <- read.table(text = "ID country age
                         1   X   83
                         2   X   15
                          3   Y   2
                          4   Y   12
                           5   X   2
                           6   Y   2
                           7   Y   18
                           8   X   85",
                           header = TRUE)

 x<-filter(dat, dat$age>80&dat$age<10) 
 x

Maintenant, vous pouvez soit utiliser la condition OR (|)), soit utiliser la condition AND (&) en fonction de ce que vous essayez de faire.

0
Megh