Je veux filtrer un data frame de sorte que je supprime les lignes qui répondent à deux critères sur trois. Mes données ressemblent à ceci :
df <- structure(list(id = c("032", "033", "018", "052", "031", "072", "019", "071", "068", "999"),
V1 = c(31.9, 76.3, 62.9, 23.6, 183.4, 114.8, 174.5, 74.9, 239.2, 19),
V2= c(1.45, 1.03, 0.59, 1.25, 1.11, 1.64, 0.56, 0.64, 1.15, 0.84),
V3 = c(60, 60, 50, 50, 50, 40, 60, 40, 30, 100)),
class = "data.frame", row.names = c(NA, -10L))
Je veux supprimer les lignes qui répondent à 2 critères sur 3 des critères suivants :
V1 < 20;
V2 > 1.6;
V3 < 10 ou > 90
Dans cet exemple, la seule entrée correspondante est id = 999.
J'ai essayé de faire cela en configurant une chaîne de filtres pour couvrir toutes les possibilités, comme :
df |>
filter(V1 > 20 & V2 < 1.6 | V3 > 10 | V3 < 90) |>
filter(V2 < 1.6 & V1 > 20 | V3 > 10 | V3 < 90) |>
filter(V3 > 10 | V3 < 90 & V1 > 20 | V2 < 1.6)
Mais les lignes individuelles n'ont pas réussi à filtrer l'id=999, et je me demande aussi s'il existe un moyen de le faire en moins de trois lignes de code?