假设我有一个如下所示的数据集:
> 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 :(得分:9)
!=
是一个运算符,意思是"不等于"。
!
表示逻辑否定(NOT
)
你的病情
iso3!="ARG" & Coverage>93
是
(iso3 不等于至" ARG")和(覆盖率> 93)
如果你想要
NOT((等于#34; ARG")和(覆盖范围> 93))
您需要适当地创建条件,例如
例如
!(iso == 'ARG' & Coverage > 93)
要完全覆盖基础R中的逻辑运算符,请参阅
help('Logic', package='base')