Tout comme la création, la sélection dans les dataframes est à mi-chemin entre la sélection dans les matrices et celle dans les listes. Commençons par créer un dataframe :
x <- c("A","B","C",rep("D",3))
y <- 1:6
z <- c(seq(10,45,length=5),-10)
mondf <- data.frame(x,y,z)
mondf
# x y z
# 1 A 1 10.00
# 2 B 2 18.75
# 3 C 3 27.50
# 4 D 4 36.25
# 5 D 5 45.00
# 6 D 6 -10.00
Sélection par position
Comme avec les matrices, il est possible de spécifier des lignes et/ou colonnes à sélectionner. Voici un exemple avec une sélection des 4 premières lignes et des colonnes 2 et 3 :
mondf[1:4,2:3]
# y z
# 1 1 10.00
# 2 2 18.75
# 3 3 27.50
# 4 4 36.25
Nous pouvons, tout comme avec une liste, sélectionner via un nom associé à une colonne au sein du dataframe :
mondf$z
# [1] 10.00 18.75 27.50 36.25 45.00 -10.00
mondf["z"]
# z
# 1 10.00
# 2 18.75
# 3 27.50
# 4 36.25
# 5 45.00
# 6 -10.00
Il est également possible de pouvoir mixer les deux. Par exemple ici, nous sélectionnons les lignes 2 à 4 de la colonne x
:
mondf$x[2:4]
# [1] B C D
# Levels: A B C D
De façon générale, soyez attentif à la structure de l’objet que vous conservez en fonction de votre façon de sélectionner.
Sélection par condition
Même s’il arrive de sélection par indice, il est généralement plus courant de devoir sélectionner selon une condition.
Par exemple, la ligne suivante permet de sélectionner toutes les lignes qui satisfont la condition spécifiée :
mondf[mondf$y>4,]
# x y z
# 5 D 5 45
# 6 D 6 -10
mondf[(mondf$y>4)|(mondf$z>17),]
# x y z
# 2 B 2 18.75
# 3 C 3 27.50
# 4 D 4 36.25
# 5 D 5 45.00
# 6 D 6 -10.00
mondf[(mondf$y>4)&(mondf$z>17),]
# x y z
# 5 D 5 45
Vous noterez que, lors de la construction de vos conditions, il est indispensable de repréciser l’association dataframe$colonne
, même si le nom associé à une colonne d’un dataframe est forcément unique. Vous pouvez également préciser une ou plusieurs colonnes en particulier :
mondf[mondf$y>4,1:2] # équivalent à
mondf[mondf$y>4,c('x','y')]
# x y
# 5 D 5
# 6 D 6
En résumé
Le dataframe étant un objet à mi-chemin entre une liste et une matrice, il partage les façons de sélectionner de ces deux types :
Vous pouvez sélectionner selon un indice ou un vecteur d’indice, sur les lignes, les colonnes ou les deux en même temps.
Vous pouvez sélectionner en précisant le nom associé à la colonne d’un dataframe.
Vous pouvez sélectionner selon une condition qui ne va conserver que les lignes qui satisfont ladite condition.
Et il est tout à fait possible de mixer ces différentes méthodes pour arriver à une sélection bien précise !
A présent, la sélection au sein des objets principaux de R n'a plus de secrets pour vous ! Nous allons maintenant voir un peu plus en détails comment exploiter et manipuler ces différents objets dans l'optique d'une analyse statistique.