-5

i have a simple question. I have a big df like :

     Name  AGE  Order
       Anna  25    1
       Anna   28   2
       Peter 10    1
       Paul  15    1
       Mary  14    1
       John  8     1
       Charlie 24  2
       Robert  20  2

For just Order= 1 , I need filter AGE>=10 & AGE<=15. So output file must be:

       Name  AGE  Order
        Anna   28   2
        Peter 10    1
        Paul  15    1
        Mary  14    1
        Charlie 24  2
        Robert  20  2

Could you help me, please?

Cris
  • 65
  • 1
  • 1
  • 6

1 Answers1

1

We can use vectorized ifelse

For Order = 1 check if AGE lies in the range of 10-15, select rest rows as it is.

df[ifelse(df$Order==1, df$AGE >= 10 & df$AGE <= 15, TRUE), ]

#    Name AGE Order
#2    Anna  28     2
#3   Peter  10     1
#4    Paul  15     1
#5    Mary  14     1
#7 Charlie  24     2
#8  Robert  20     2

We can also consolidate to:

subset(df, AGE >= 10 & AGE <= 15 | Order != 1)
Pierre L
  • 26,748
  • 5
  • 39
  • 59
Ronak Shah
  • 286,338
  • 16
  • 97
  • 143