web-dev-qa-db-fra.com

Renvoie le (s) numéro (s) de ligne pour une valeur particulière dans une colonne dans un cadre de données

J'ai un bloc de données (df) Et je me demandais comment renvoyer le ou les numéros de ligne pour une valeur particulière (2585) Dans la 4th column (height_chad1) du même bloc de données?

J'ai essayé:

row(mydata_2$height_chad1, 2585)

et j'obtiens l'erreur suivante:

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

Existe-t-il une ligne de code équivalente qui fonctionne pour les trames de données au lieu des objets de type matrice?

Toute aide serait appréciée.

34
pkg77x7

Utilisez which(mydata_2$height_chad1 == 2585)

Court exemple

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

Comme Matt Weller a souligné, vous pouvez utiliser la fonction length. La fonction count dans plyr peut être utilisée pour renvoyer le nombre de chaque valeur de colonne unique.

58
SethB