Comment puis-je exclure les lignes en R basé sur plusieurs valeurs?
Disons que j'ai un jeu de données qui ressemble à ceci:
> data
iso3 Vaccine Coverage
1 ARG DPT3 95
2 ARG MCV 94
3 ARG Pol3 91
4 KAZ DPT3 99
5 KAZ MCV 98
6 KAZ Pol3 99
7 COD DPT3 67
8 COD MCV 62
9 COD Pol3 66
Je veux filtrer certains enregistrements en fonction de plusieurs conditions soient remplies simultanément; dire, je veux supprimer toutes les données en provenance d'Argentine (ARG) avec une couverture de plus de 93 pour cent. Le résultat devrait donc exclure des lignes 1 et 2:
iso3 Vaccine Coverage
3 ARG Pol3 91
4 KAZ DPT3 99
5 KAZ MCV 98
6 KAZ Pol3 99
7 COD DPT3 67
8 COD MCV 62
9 COD Pol3 66
J'ai essayé d'utiliser subset()
mais il exclut trop:
> subset(data, iso3!="ARG" & Coverage>93)
iso3 Vaccine Coverage
4 KAZ DPT3 99
5 KAZ MCV 98
6 KAZ Pol3 99
Le problème semble être que la &
opérateur ne semble pas fonctionner comme les booléens ET, de retour à l'intersection des deux conditions. Au lieu de cela, il fonctionne comme un booléen OU, de retour de leur union.
Ma question est, que dois-je utiliser ici pour forcer le booléen ET?
- Il peut être moins compliqué si vous utilisez
with
, par exemplewith(df, !(iso3 == "ARG" & Coverage > 93))
Vous devez vous connecter pour publier un commentaire.
!=
est un opérateur qui signifie "pas égal".!
indique une négation logique (NOT
)Votre condition
est
(iso3 pas égal à "ARG") ET (Couverture > 93)
Si vous voulez
PAS((iso égal à "ARG") ET (Couverture > 93))
Vous avez besoin pour créer une condition de façon appropriée, par exemple
par exemple
Une couverture complète des opérateurs logiques de base R voir