Как удалить строки на основе условий OR и AND в r

#r

#r

Вопрос:

Я хочу удалить строки, которые имеют ID = 3, но ПОЛ не равен «F».

 df<-data_frame(ID=c(2,3,3,3,3,5,6,7,8,9),GENDER=c("M","M","F","F","F","M","F","F","M","F"))
  

Ответ №1:

Мы можем создать логическое выражение в filter и negate ( ! ) целое, чтобы удалить эти строки

 library(dplyr)
df %>%
       filter(!(ID == 3 amp; GENDER != "F"))
  

или то же самое с subset from base R

 subset(df, !(ID == 3 amp; GENDER != "F"))
  

Ответ №2:

Другой способ сформулировать условие — выбрать строки, в которых ID не равно 3 или GENDER = 'F' .

 subset(df, ID != 3 | GENDER == 'F')

#    ID GENDER
#  <dbl> <chr> 
#1     2 M     
#2     3 F     
#3     3 F     
#4     3 F     
#5     5 M     
#6     6 F     
#7     7 F     
#8     8 M     
#9     9 F     
  

и с dplyr filter :

 dplyr::filter(df, ID != 3 | GENDER == 'F')