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 exemple with(df, !(iso3 == "ARG" & Coverage > 93))
InformationsquelleAutor Hiterunner | 2014-10-01