2014-09-01 78 views
0

下面是一個示例數據集。篩選出特定類別

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 

我想要一個在Alc中沒有「E」的數據集。我做了以下。

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

可以使用「不等於」操作者!=

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

我試圖做到這一點;不知道那時發生了什麼。現在它可以工作。 – 2014-09-01 16:29:54

+0

請注意,'%in%'在這類情況下也可能有幫助(例如,%c(「G」,「F」)或'!(%c% – 2014-09-01 16:31:53

0

嘗試 subset(a,Alc $in$ c("G","F")),這是爲了處理數據幀的對象的常見方式,與標準子集托架功能[ ]沿。請參閱?subsetdrop參數。

+1

其實標準的方式可能是'a [a $ Alc!=「E」,]' – 2014-09-01 16:43:05

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