我在R中有一个data.frame。我想在两个不同的列上尝试两个不同的条件,但我希望这些条件包括在内。因此,我想使用“或”来组合条件。当我想使用“AND”条件时,我已经使用以下语法取得了很多成功。
my.data.frame <- data[(data$V1 > 2) & (data$V2 < 4), ]
但是我不知道上面如何使用“OR”。
最佳答案
my.data.frame <- subset(data , V1 > 2 | V2 < 4)
模仿此功能的行为并且更适合包含在功能体内的替代解决方案:
new.data <- data[ which( data$V1 > 2 | data$V2 < 4) , ]
有人批评不需要使用
which
,但这确实阻止了NA
值返回不必要的结果。上面演示的两个没有which
的选项的等效项(即,对于V1或V2中的任何NA不返回NA行)将是: new.data <- data[ !is.na(data$V1 | data$V2) & ( data$V1 > 2 | data$V2 < 4) , ]
注意:我要感谢匿名贡献者试图修复上面代码中的错误,该错误被主持人拒绝。实际上,在纠正第一个错误时,我注意到了另一个错误。如果要按我的意图处理,则需要首先检查NA值的条件子句,因为...
> NA & 1
[1] NA
> 0 & NA
[1] FALSE
使用“&”时,参数的顺序可能很重要。
关于r - 如何使用 “OR”组合多个条件以子集数据帧?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4935479/