我在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/

10-11 23:21
查看更多