2017-04-14 66 views
0

我有一個數據集,看起來像這樣如何選擇包含R中所選行的特定值的列?

Site <- c(1,2,3,4,5,6,7,8,9,10,"kingdom","phylum","class") 
A <- c(0,0,1,2,4,5,6,7,13,56,"Eukaryota","Arthropoda","Insecta") 
B <- c(1,0,0,0,0,4,5,7,7,8,"Eukaryota","Arthropoda","Insecta") 
C <- c(2,3,0,0,4,5,67,8,43,21,"Eukaryota","Arthropoda","") 
D <- c(134,0,0,2,0,0,9,0,45,55,"Eukaryota","Arthropoda","Arachnida") 
site.species.sample <- data.frame(Site,A,B,C,D) 

我想從該數據集僅選擇列,其中行「類」是「昆蟲」(即在此實例中僅列A和B滿足這個條件)。我想這樣的代碼:

site.species.sample <- site.species.sample[,site.species.sample["class",]=="Insecta"] 

但得到了一個錯誤:

Error in `[.data.frame`(site.species.sample, , site.species.sample["class", : 
undefined columns selected 

那麼我該怎麼辦呢?由於

+0

有,爲什麼你保持字符和數字數據在同一列的一個原因? –

+0

是的,這是我的數據集的格式 –

回答

1

下面是一個選項

site.species.sample[,c(TRUE,subset(site.species.sample[,-1],site.species.sample$Site=="class")=="Insecta")] 

Site   A   B 
1  1   0   1 
2  2   0   0 
3  3   1   0 
4  4   2   0 
5  5   4   0 
6  6   5   4 
7  7   6   5 
8  8   7   7 
9  9   13   7 
10  10   56   8 
11 kingdom Eukaryota Eukaryota 
12 phylum Arthropoda Arthropoda 
13 class Insecta Insecta 
+0

我可以問一下[,-1]是什麼意思?謝謝 –

+0

它排除了子集中的第一列,以確保它在任何情況下都能被選中。然後用'c(TRUE,'插入'TRUE'作爲第一個向量的元素來選擇第一列。 –

+0

啊我明白了,非常感謝! –

相關問題