过滤掉特定类别

时间:2014-09-01 16:26:51

标签: r filter dplyr

这是一个样本数据集。

a <- structure(list(ID = c("A1", "A2", "A3", "A1", "A1", "A2", "A4", "A5", "A2", "A3"), 
Type = c("A", "B", "C", "A", "A", "A", "B", "B", "C", "B"), 
Alc = c("E", "F", "G", "E", "E", "E", "F", "F", "F", "F"), 
Com = c("Y", "N", "Y", "N", "Y", "Y", "Y", "N", "N", "Y")),
.Names = c("ID", "Type", "Alc", "Com"), row.names = c(NA, -10L), class = "data.frame")
a
   ID Type Alc Com
1  A1    A   E   Y
2  A2    B   F   N
3  A3    C   G   Y
4  A1    A   E   N
5  A1    A   E   Y
6  A2    A   E   Y
7  A4    B   F   Y
8  A5    B   F   N
9  A2    C   F   N
10 A3    B   F   Y

我想要一个没有&#34; E&#34;的数据集。在Alc。我做了以下几点。

library(dplyr)
b <- filter(a, Alc=="G"| Alc=="F")
b
  ID Type Alc Com
1 A2    B   F   N
2 A3    C   G   Y
3 A4    B   F   Y
4 A5    B   F   N
5 A2    C   F   N
6 A3    B   F   Y

如果Alc中有很多类别,那么写下所有类别会很麻烦。我需要一个简单的解决方法。

感谢您的帮助。

3 个答案:

答案 0 :(得分:3)

您可以使用&#34;不等于&#34; operator !=

b <- filter(a, Alc!="E")

答案 1 :(得分:1)

尝试:

a[a$Alc!='E',]
   ID Type Alc Com
2  A2    B   F   N
3  A3    C   G   Y
7  A4    B   F   Y
8  A5    B   F   N
9  A2    C   F   N
10 A3    B   F   Y

答案 2 :(得分:0)

尝试 subset(a,Alc $in$ c("G","F")),这是操作数据框对象的常用方法,以及标准子集括号函数[ ]。另请参阅drop的{​​{1}}参数。