Dplyr~选择一些东西,除了

时间:2016-05-30 16:16:50

标签: r exception filter dplyr

所以我有以下代码:

ng-show="([state] | filter:filterText).length > 0"

此代码的作用是在dataset1中添加type =“black”或type =“orange”的数据集0的每一行。

如果我想除橙色和黑色之外的其他所有东西怎么办?以下是否正确?

library (dplyr)
dataset1 <- filter(dataset0, dataset0$type == "black" | dataset0$type == "orange")

提前谢谢。

2 个答案:

答案 0 :(得分:1)

一种方法可能是:

 dataset1 <- filter(dataset0, !(dataset0$type == "black" | dataset0$type == "orange") )

您的建议不正确。当你否定复合表达式时,如果你不否定整个表达式,你需要将OR改为AND。

dataset1 <- filter(dataset0, dataset0$type != "black" & dataset0$type != "orange")

这与dplyr无关。这只是基本逻辑。我还怀疑你不应该将数据帧名称包含在&#34; $&#34;逻辑表达式中的运算符。尝试:

dataset1 <- filter(dataset0, !(type == "black" | type == "orange") )

答案 1 :(得分:0)

您必须更改&#39;或&#39;到&#39;和&#39;,就像这样

首先,制作一些假数据

type <- c(rep("black", 5), rep("orange", 5), rep("green", 5))
dataset0 <- as.data.frame(type)

现在使用逻辑语句中的&进行子集

dataset1 <- filter(dataset0, dataset0$type != "black" & dataset0$type != "orange")

如果您不将|更改为&,则会返回原始数据框(包括橙色和黑色),如下所示:

dataset1 <- filter(dataset0, dataset0$type != "black" | dataset0$type != "orange")
dataset1
     type
1   black
2   black
3   black
4   black
5   black
6  orange
7  orange
8  orange
9  orange
10 orange
11  green
12  green
13  green
14  green
15  green