Chapitre 3 Objets et opérateurs
3.1 Objets dans R
Une variable permet de stocker une valeur ou un objet dans R. De cette façon, il sera possible d’accéder à la valeur ou à l’objet qui est stocké dans la variable.
La ligne de code ci-dessus déclare une variable nommée “ma_variable” et lui assigne la valeur de 3. L’exécution de ce code n’affiche pas de résultat dans la console, mais l’objet nommé “ma_variable” est bien créée et stockée dans l’environnement.
Pour afficher le contenu de la variable, il suffit de taper le nom de celle-ci pour l’afficher dans la console.
## [1] 3
De plus, il est également possible d’utiliser la fonction print() qui permet d’afficher la valeur ou l’objet de la variable sélectionnée.
## [1] 3
En langage R, il existe différents types d’objets qui peuvent être assignés à des variables comme les scalaires, les vecteurs, les facteurs, les matrices et les bases de données. Ces objets sont présentés dans les points suivants.
3.1.1 Scalaire
Un scalaire permet de stocker un objet sous forme de valeur numérique, de chaîne de caractères ou de valeur logique.
## [1] 3
Une chaîne de caractères est une suite de caractères qui doit être écrit entre guillemets (” “).
## [1] "Statistique"
Une valeur logique est une quantitée binaire (vrai ou faux). Ces variables s’écrivent TRUE et FALSE. Il est également possible d’utiliser T et F comme abréviations.
## [1] TRUE
## [1] FALSE
3.1.2 Vecteur
Un vecteur est un objet qui permet de stocker une liste ordonnée d’éléments. Les éléments d’un vecteur doivent être du même type. Pour pouvoir stocker une information dans un seul objet, il faut utiliser la fonction c() qui permet de combiner les arguments de la fonction.
## [1] NA NA NA NA NA NA NA NA
## [1] 1 2 3 4 5 6
# Vecteur sous forme d'une chaine de caractères
b <- c("Un", "Deux", "Trois", "Quatre", "Cinq", "Six")
b## [1] "Un" "Deux" "Trois" "Quatre" "Cinq" "Six"
## [1] TRUE FALSE TRUE FALSE FALSE TRUE
Étant donné que le vecteur est un objet ordonné, il est possible d’accéder, remplacer ou modifier un ou plusieurs éléments par rapport à leur position dans l’objet. Il est nécessaire d’utiliser les crochets [ ] pour indiquer le ou les éléments à manipuler. Afin de connaître la longueur d’un vecteur, il faut utiliser la fonction length().
## [1] 6
## [1] 6
Pour accéder un seul élément du vecteur, il suffit d’écrire le nom de la variable suivi de crochets contenant la position de l’élément sélectionné.
## [1] "Deux"
Il est possible d’accéder à plusieurs éléments en mettant un vecteur de position entre crochets.
## [1] "Deux" "Trois" "Cinq"
Il est aussi possible d’accéder à une série d’éléments à la suite en mettant le signe : entre les 2 positions désirées.
## [1] "Deux" "Trois" "Quatre" "Cinq"
Il est également possible d’accéder à certaines lignes en fonction de la valeur logique d’un vecteur ayant la même taille du vecteur sélectionné. Si la position est mise à TRUE, la valeur sera sélectionnée et dans le cas dans lequel la valeur est mise à FALSE la valeur ne sera pas retenue.
# Extraction de plusieurs éléments en fontion de la valeur logique:
b[c(FALSE, TRUE, TRUE, FALSE, TRUE, TRUE)]## [1] "Deux" "Trois" "Cinq" "Six"
Il est également possible de créer un vecteur vide dans lequel il sera par la suite possible d’ajouter des valeurs. Le code qui suit permet de créer ce vecteur:
3.1.3 Facteur
Un facteur est un vecteur dont les éléments peuvent prendre que des valeurs prédéfinies. Un facteur dispose de l’argument levels qui permet de définir des catégories de valeurs. Le facteur est généralement utilisé pour stocker des variables catégorielles.
Pour commencer, il faut définir un vecteur qui peut être numérique, logique ou chaine de caractères. Le facteur est une variable nominale.
## [1] "Homme" "Femme" "Femme" "Femme" "Homme"
La fonction factor() permet de créer un facteur à partir d’un vecteur.
## [1] Homme Femme Femme Femme Homme
## Levels: Femme Homme
On note que la sortie est légèrement différente lorsque le vecteur est mis sous forme de facteur à 2 niveaux (Femme, Homme). Ceci s’affiche à la ligne Levels. Par défaut, les niveaux d’un facteur sont affichés par ordre alphabétique et numérique croissant. Il est possible de fixer l’ordre en ajoutant l’argument levels en appliquant la fonction factor().
## [1] H F F F H
## Levels: H F
Dans le cas dans lequel on aimerait modifier un élément, il n’est pas possible d’affecter une valeur qui n’est pas défini comme un niveau. On voit donc apparaître une erreur dans la console.
## Warning in `[<-.factor`(`*tmp*`, 2, value = "Fille"): invalid factor level, NA generated
Il est possible de renommer les niveaux en utilisant la fonction levels(). Il faut faire attention à l’ordre lorsqu’on utilise la fonction levels(). L’argument order permet d’ordonner les labels proposés. Le facteur est dès lors une variable ordinale.
## [1] Garcon <NA> Fille Fille Garcon
## Levels: Fille Garcon
Il est possible d’avoir un facteur numérique en y affectant une catégorie avec l’argument labels lors de l’utilisation de la fonction factor().
satisfaction <- factor(c(3, 3, 4, 1, 2, 1, 1),
labels = c("Pas du tout d'accord", "Pas d'accord",
"D'accord", "Tout à fait d'accord"),
order = TRUE)
satisfaction## [1] D'accord D'accord Tout à fait d'accord Pas du tout d'accord Pas d'accord
## [6] Pas du tout d'accord Pas du tout d'accord
## Levels: Pas du tout d'accord < Pas d'accord < D'accord < Tout à fait d'accord
3.1.4 Matrice
Une matrice est un vecteur dont les éléments sont disposés sous forme d’un tableau qui comporte des lignes et des colonnes. De façon équivalente au vecteur, les éléments de la matrices doivent être de même classe (numérique, logique ou chaîne de caractères). La fonction matrix() permet de déclarer une matrice. Il faut ajouter l’argument ncol et/ou nrow pour déterminer la forme de la matrice.
## [,1] [,2] [,3] [,4]
## [1,] 1 7 13 19
## [2,] 2 8 14 20
## [3,] 3 9 15 21
## [4,] 4 10 16 22
## [5,] 5 11 17 23
## [6,] 6 12 18 24
Par défaut, le remplissage se fait par colonne. Il faut donc mettre l’argument byrow à TRUE pour remplir la matrice par ligne.
## [,1] [,2] [,3] [,4]
## [1,] 1 2 3 4
## [2,] 5 6 7 8
## [3,] 9 10 11 12
## [4,] 13 14 15 16
## [5,] 17 18 19 20
## [6,] 21 22 23 24
L’objet matrice dispose de la fonction dim() qui permet d’obtenir sa dimension. Le premier terme correspond aux nombres de lignes et le deuxième correspond aux nombres de colonnes.
## [1] 6 4
Les fonctions rownames() et colnames() permettent de récupérer ou de définir les noms des lignes et des colonnes. Attention de bien mettre le bon nombre de noms aux lignes et aux colonnes.
## C1 C2 C3 C4
## L1 1 2 3 4
## L2 5 6 7 8
## L3 9 10 11 12
## L4 13 14 15 16
## L5 17 18 19 20
## L6 21 22 23 24
Comme pour le vecteur, il est possible d’accéder à un ou plusieurs éléments de la matrice. Pour extraire une ligne de la matrice, il faut utiliser les crochets avec une virgule pour délimiter les deux dimensions de la matrice[ , ]. Le premier terme (celui avant la virgule) permet d’accéder aux colonnes et le deuxième terme (celui après la virgule) permet d’accéder aux lignes. Pour accéder à un seul élément, il faut indiquer la position de la ligne et de la colonne désirée.
## [1] 14
Pour accéder à une ligne complète, il suffit de mettre la position de la ligne désirée avant la virgule.
## [1] 2 8 14 20
Pour accéder à une colonne complète, il suffit de mettre la position de la colonne désirée après la virgule.
## [1] 13 14 15 16 17 18
Pour accéder à un groupe d’élément, il faut déterminer l’intervalle des lignes et des colonnes désirées.
## [,1] [,2]
## [1,] 9 15
## [2,] 10 16
## [3,] 11 17
3.1.5 Dataframe
Un jeu de données se structure sous forme d’un tableau dans lequel chaque ligne correspond à une observation (individu) et chaque colonne à une caractéristique (variable). Les data frame sont les objets les plus utilisées lors de l’analyse d’une base de données. Contrairement aux vecteurs et aux matrices, une dataframe peut avoir différents type de variables (numérique, logique et chaînes de caractères). La fonction data.frame() permet la création de la base de données.
dataframe <- data.frame(
ID = 1:5,
Genre = c("Homme", "Femme", "Femme", "Femme", "Homme"),
Age = c(45, 42, 45, 43, 44)
)
dataframe## ID Genre Age
## 1 1 Homme 45
## 2 2 Femme 42
## 3 3 Femme 45
## 4 4 Femme 43
## 5 5 Homme 44
Les colonnes d’une dataframe sont toujours nommées et correspondent à la variable mesurée. Les lignes sont automatiquement numérotées par ordre.
La fonction str() permet d’afficher la structure de la dataframe en affichat le nom de la variable, le type de celle-ci ainsi que les valeurs des observations.
## 'data.frame': 5 obs. of 3 variables:
## $ ID : int 1 2 3 4 5
## $ Genre: chr "Homme" "Femme" "Femme" "Femme" ...
## $ Age : num 45 42 45 43 44
La fonction View() permet de visionner la data frame dans une autre fenêtre.
Afin d’analyser les données, il est important de pouvoir d’en extraire uniquement une partie. Il existe deux façons d’extraire une colonne. La première consiste à reproduire le cas de la matrice en séléctionnant la position de la colonne.
## [1] "Homme" "Femme" "Femme" "Femme" "Homme"
La deuxième option est d’utiliser le symbole $. Il doit être placé entre le nom de la data frame et le nom de la colonne. Il est conseillé d’utiliser cette option pour extraire une colonne d’une data frame.
## [1] "Homme" "Femme" "Femme" "Femme" "Homme"
Pour extraire une ligne de la base de donnée, il faut procéder comme pour la matrice.
## ID Genre Age
## 2 2 Femme 42
Pour extraire les observations (lignes) qui possèdent certaines caractéristiques, il est possible d’écrire la ligne suivante comme suit:
## ID Genre Age
## 1 1 Homme 45
## 5 5 Homme 44
Il est également possible de mettre plusieurs conditions.
## ID Genre Age
## 2 2 Femme 42
## 4 4 Femme 43
Il est possible d’ajouter une colonne à la base de données. Plusieurs options sont possibles:
- Créer un vecteur de même taille que la longueur de la base de données et l’ajouter à la base de données en utilisant la fonction
cbind(). - Créer une nouvelle variable directement dans la base de données en déterminant son nom grâce au signe $.
yeux <- c("brun", "brun", "bleu", "bleu", "brun")
dataframe <- cbind(dataframe, yeux)
dataframe$cheveux <- c("blond", "brun", "blond", "noir", "noir")
str(dataframe)## 'data.frame': 5 obs. of 5 variables:
## $ ID : int 1 2 3 4 5
## $ Genre : chr "Homme" "Femme" "Femme" "Femme" ...
## $ Age : num 45 42 45 43 44
## $ yeux : chr "brun" "brun" "bleu" "bleu" ...
## $ cheveux: chr "blond" "brun" "blond" "noir" ...