Comment utiliser la fonction Which dans R (avec exemples)
La fonction which() dans R renvoie la position des éléments dans un vecteur logique qui sont TRUE .
Ce tutoriel fournit plusieurs exemples d’utilisation pratique de cette fonction.
Exemple 1 : Rechercher des éléments dans un vecteur
Le code suivant montre comment trouver la position de tous les éléments d’un vecteur égaux à 5 :
#create data data <- c(1, 2, 2, 3, 4, 4, 4, 5, 5, 12) #find the position of all elements equal to 5 which(data == 5) [1] 8 9
On voit que les éléments en positions 8 et 9 dans le vecteur sont égaux à la valeur 5.
On peut également trouver la position de tous les éléments d’un vecteur qui ne sont pas égaux à 5 :
#find the position of all elements not equal to 5 which(data != 5) [1] 1 2 3 4 5 6 7 10
On peut également trouver quels éléments sont entre deux valeurs ou en dehors de deux valeurs :
#find the position of all elements with values between 2 and 4 which(data >= 2 & data <= 4) [1] 2 3 4 5 6 7 #find the position of all elements with values outside of 2 and 4 which(data < 2 | data > 4) [1] 1 8 9 10
Exemple 2 : compter les occurrences dans un vecteur
Le code suivant montre comment utiliser la fonction length() pour trouver le nombre d’éléments dans un vecteur supérieur à une certaine valeur :
#create data data <- c(1, 2, 2, 3, 4, 4, 4, 5, 5, 12) #find number of elements greater than 4 length(which(data > 4)) [1] 3
On peut voir qu’il y a 3 éléments dans ce vecteur avec des valeurs supérieures à 4.
Exemple 3 : Rechercher des lignes dans un bloc de données
Le code suivant montre comment renvoyer la ligne dans un bloc de données contenant la valeur max ou min dans une certaine colonne :
#create data frame
df <- data.frame(x = c(1, 2, 2, 3, 4, 5),
y = c(7, 7, 8, 9, 9, 9),
z = c('A', 'B', 'C', 'D', 'E', 'F'))
#view data frame
df
x y z
1 1 7 A
2 2 7 B
3 2 8 C
4 3 9 D
5 4 9 E
6 5 9 F
#return row that contains the max value in column x
df[which.max(df$x), ]
x y z
6 5 9 F
#return row that contains the min value in column x
df[which.min(df$x), ]
x y z
1 1 7 A
Exemple 4 : sous-ensemble par lignes dans un bloc de données
Le code suivant montre comment subdiviser un bloc de données en lignes répondant à certains critères :
#create data frame
df <- data.frame(x = c(1, 2, 2, 3, 4, 5),
y = c(7, 7, 8, 9, 9, 9),
z = c('A', 'B', 'C', 'D', 'E', 'F'))
#view data frame
df
x y z
1 1 7 A
2 2 7 B
3 2 8 C
4 3 9 D
5 4 9 E
6 5 9 F
#return subset of data frame where values in column y are greater than 8
df[which(df$y > 8), ]
x y z
4 3 9 D
5 4 9 E
6 5 9 F
Trouvez plus de didacticiels R sur cette page .