2014-01-09 3 views
23

Ich habe einen Datenrahmen (df) und ich frage mich, wie die Zeilennummer (n) für einen bestimmten Wert (2585) im 4th column (height_chad1) der gleichen Daten zurückgegeben werden Rahmen?Gibt Zeilennummer (n) für einen bestimmten Wert in einer Spalte in einem Datenframe zurück

Ich habe versucht:

row(mydata_2$height_chad1, 2585) 

und bekomme ich folgende Fehlermeldung:

Error in factor(.Internal(row(dim(x))), labels = labs) : 
    a matrix-like object is required as argument to 'row' 

Gibt es ein Äquivalent Codezeile, die anstelle von matrixartigen Objekte für Datenrahmen funktioniert ?

Jede Hilfe wäre willkommen.

Antwort

41

Verwenden which(mydata_2$height_chad1 == 2585)

Kurz Beispiel

df <- data.frame(x = c(1,1,2,3,4,5,6,3), 
       y = c(5,4,6,7,8,3,2,4)) 
df 
    x y 
1 1 5 
2 1 4 
3 2 6 
4 3 7 
5 4 8 
6 5 3 
7 6 2 
8 3 4 

which(df$x == 3) 
[1] 4 8 

length(which(df$x == 3)) 
[1] 2 

count(df, vars = "x") 
    x freq 
1 1 2 
2 2 1 
3 3 2 
4 4 1 
5 5 1 
6 6 1 

df[which(df$x == 3),] 
    x y 
4 3 7 
8 3 4 

Wie Matt Weller wies darauf hin, können Sie die length-Funktion verwenden. Die Funktion count in plyr kann verwendet werden, um die Anzahl der einzelnen Spaltenwerte zurückzugeben.

+0

und wenn ich die Anzahl der Male finden wollte, die der Wert 2585 in der gleichen Spalte aufgetreten ist, würde ich ein ähnliches Konstrukt mit der Funktionsanzahl verwenden? count (mydata_2 $ height_chad1 == 2585) – pkg77x7

+2

Sie können 'length' für das Ergebnis der Antwort von Seth verwenden oder' sum' anstelle von 'count' in Ihrem Vorschlag verwenden. Haben Sie die "count" -Funktion wie vorgeschlagen ausprobiert? Es ist leicht zu testen, ohne dass etwas kaputt geht ...! –

+0

Schöne Lösung, aber was ist, wenn Sie nicht nur auf die X-Spalte schauen möchten, was ist, wenn Sie die Zeile & Col-Werte für jede Zelle im Datenrahmen, der gleich 3 ist, zurückgeben wollen? – par

Verwandte Themen