2017-04-14 4 views
0

ich einen Datensatz haben, wie diese nur die Spalten aus diesem DatensatzWie wählt man Spalten aus, die bestimmte Werte einer ausgewählten Zeile in R enthalten?

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) 

Ich möchte wählen sieht, wo die Zeile „Klasse“ ist „Insecta“ (dh in diesem Beispiel nur die Spalten A und B erfüllen diese Bedingung). Ich habe versucht, diesen Code:

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

bekam aber einen Fehler:

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

So wie ich es tun? Dank

+0

Gibt es einen Grund, warum Sie Zeichen und numerische Daten in der gleichen Spalte halten? –

+0

ja, das ist das Format meines Datensatzes –

Antwort

1

Im Folgenden finden Sie eine Option

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

kann ich fragen, was das [, -1] bedeutet? Danke –

+0

Es schließt die erste Spalte von der Untergruppe aus, um sicherzustellen, dass sie in jedem Fall ausgewählt wird. Dann mit 'c (TRUE,' fügt 'TRUE' als erstes Element des Vektors ein, um die erste Spalte auszuwählen. –

+0

ah ich sehe, vielen Dank! –

Verwandte Themen