假设我有一个如下所示的数据集:
> 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
Run Code Online (Sandbox Code Playgroud)
我想根据同时满足的几个条件过滤掉一些记录; 比方说,我想从阿根廷(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
Run Code Online (Sandbox Code Playgroud)
我尝试使用,subset()但它排除了太多:
> subset(data, iso3!="ARG" & Coverage>93)
iso3 Vaccine Coverage
4 KAZ DPT3 99
5 KAZ MCV 98
6 KAZ Pol3 99
Run Code Online (Sandbox Code Playgroud)
问题似乎是&运算符似乎不像布尔AND那样工作,返回两个条件的交集.相反,它的功能类似于布尔OR,返回它们的联合.
我的问题是,我在这里使用什么来强制布尔AND?
!= 是一个意思是"不平等"的运营商.
!表示逻辑否定(NOT)
你的病情
iso3!="ARG" & Coverage>93
Run Code Online (Sandbox Code Playgroud)
是
(iso3 不等于 "ARG")AND(覆盖率> 93)
如果你想
NOT((等于"ARG")和(覆盖率> 93))
您需要适当地创建条件,例如
例如
!(iso == 'ARG' & Coverage > 93)
Run Code Online (Sandbox Code Playgroud)
有关基本R中逻辑运算符的完整覆盖,请参阅
help('Logic', package='base')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
25230 次 |
| 最近记录: |