2014-10-01 77 views
0

比方說,我有一個數據集,看起來像這樣:如何根據多個值排除R中的行?

> 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 

我想基於正在同時滿足幾個條件來過濾掉一些記錄;比如說,我想放棄所有來自阿根廷(ARG)的數據,覆蓋率超過93%。因此,該結果應該排除行1和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 

我嘗試使用subset(),但它排除了太多:

> subset(data, iso3!="ARG" & Coverage>93) 
    iso3 Vaccine Coverage 
4 KAZ DPT3  99 
5 KAZ  MCV  98 
6 KAZ Pol3  99 

這個問題似乎是在&運營商似乎並不喜歡的工作布爾AND,返回兩個條件的交集。相反,它的功能像一個布爾OR,返回它們的聯合。

我的問題是,我在這裏用什麼來強制布爾AND?

+0

它可以減少混亂,如果你使用'with',如(df,!(iso3 ==「ARG」&Coverage> 93))'' – 2014-10-01 03:47:41

回答

8

!=是一個操作符意思是「不等於」。

!表示邏輯非(NOT

你的條件

iso3!="ARG" & Coverage>93 

(ISO3 不等於到 「ARG」)AND(覆蓋> 93)

如果你想

NOT((ISO等於 「ARG」)AND(覆蓋率> 93))

,需要相應地創造條件,如

!(iso == 'ARG' & Coverage > 93) 

有關的邏輯完全覆蓋在基礎R運營商看到了

help('Logic', package='base')