Initiation à R

Encadré par Myriam YAHYAOUI
CESSA
Année universitaire 2023-2024

PLAN DU COURS


  • Introduction : qu’est-ce que R ? Prise en main de RStudio
  • Les objets courants et leurs classes.
  • Utilisation de données externes : requêtage et statistiques descriptives
  • Les graphiques : introduction à ggplot2

Introduction

1 2 3 4

1.1 Qu’est-ce que R ?

1 2 3 4

R est un langage de programmation utilisé pour l’analyse de données, la manipulation de données, la statistique et la création de graphiques.

1.1 Qu’est-ce que R ?

1 2 3 4

C’est un logiciel open source et gratuit qui a une grande communauté d’utilisateurs et de développeurs. Le langage évolue, chaque version contient des innovations.

(1:3) |> log() |> sum() |> round(2)
[1] 1.79
round(sum(log(1:3)),2)
[1] 1.79

1.2 Présentation de RStudio

1 2 3 4

RStudio est un environnement de développement intégré (EDI) spécifiquement conçu pour travailler avec R, soit :

RStudio nécessite que R soit installé.

  1. faciliter l’écriture, la gestion et l’exécution de scripts.
  2. proposer une interface avec plus de fonctionnalités telles que la coloration syntaxique, l’autocomplétion, la gestion de projets, et la visualisation des objets.

1.2 Présentation de RStudio

Le polyptyque : quatre volets par défaut, contenant chacun un ou plusieurs onglets

1 2 3 4

Visualiser les résultats de commandes (aide, graphiques) et naviguer.

Stockage des objets avec leur nom et valeur. Historique

Saisie des commandes

1.2 Présentation de RStudio

Le polyptyque : quatre volets par défaut, contenant chacun un ou plusieurs onglets

1 2 3 4

Visualiser les résultats de commandes (aide, graphiques) et naviguer.

Stockage des objets avec leur nom et valeur. Historique

Saisie des commandes

1.2. Présentation de RStudio

1 2 3 4

Mettez vous à l’aise : personnaliser votre Rstudio

  • Aller dans le menu Outils> Options globales> Apparence (Tools> Global options> Appearance)
  • Choisir une taille de police et des couleurs.

Premières commandes

1 2 3 4

2.1 Les objets

1 2 3 4

  • R est un langage de programmation orientée objet “léger”
  • R crée des objets et les garde en mémoire le temps de la session.
  • Les objets sont regroupés en classes (entier, réel, chaîne de caractères, vecteur, matrice, tableau,…)

2.2 Création d’objets

1 2 3 4


Il faut attribuer un nom et une valeur à l’aide d’un signe d’assignation tel que <-, -> ou =.

x<-0
1->y
z.ijwjijf=2

Important

Un nom d’objet ne peut commencer par un nombre, ni contenir certains caractères spéciaux, dont :,^,-,+,/,\,*,<,>,,,!,@,%,&, $, ~, (, ), [,],{, }, et ;.

Pour résumer seul le point est autorisé.

2.2 Création d’objets

1 2 3 4

La création d’un objet ne donne pas lieu à l’affichage d’un résultat dans la console. Pour afficher la valeur d’un objet créé, il suffit d’éxécuter la commande qui contient son nom. Dans certains cas, et pour être certain que l’affichage se fasse, on exécute la commande print() :

x<-0
x
[1] 0
print(x<-0)
[1] 0

Astuce

taper sur Ctrl+Entrée pour exécuter une/des ligne.s de code

Les opérateurs mathématiques

1 2 3 4

Comme dans tous les langages, nous avons accès aux opérateurs mathématiques classiques, comme présenté ci-dessous.

- 2;1 + 2;1 - 2;1 * 2;1 / 2
[1] -2
[1] 3
[1] -1
[1] 2
[1] 0.5
(1 / 2) * (3 + 4)
[1] 3.5
sqrt(25) # (racine carrée)
[1] 5
2 ^ 3;2 ** 3 # (puissance)
[1] 8
[1] 8

Les opérateurs mathématiques

1 2 3 4

Nous avons aussi accès à des fonctions telles que valeur absolue (abs()), logarithme (log()) et exponentielle (exp()), et toutes les fonctions trigonométrique (avec cos(), sin(), …).

abs(-12) # (valeur absolue)
[1] 12
log(2.718282) # (logarithme)
[1] 1
exp(1) # (exponentielle)
[1] 2.718282
cos(1) # (cosinus)
[1] 0.5403023
sin(1) # (sinus)
[1] 0.841471

Les opérateurs de comparaison

1 2 3 4

De la même manière, les opérateurs classiques de comparaison sont disponibles, comme présentés ci-dessous.

a =1
a > 1
[1] FALSE
a >= 1
[1] TRUE
a < 1
[1] FALSE
a == 1
[1] TRUE
a != 1
[1] FALSE

Les opérateurs de comparaison

1 2 3 4

On dispose aussi de l’opérateur %in% qui test si chaque valeur du premier vecteur est présent dans le deuxième vecteur. Il renvoie donc un vecteur de booléen (TRUE/FALSE) indiquant si la valeur est dans le deuxième vecteur ou non.

a %in% c(1, 3, 5)
[1] TRUE
c(1, 3, 5) %in% a
[1]  TRUE FALSE FALSE

2.2.2 Premier objet : les fonctions

1 2 3 4

  • Les fonctions sont des objets.
  • On écrit function, puis on spécifie entre parenthèse le nom des arguments, entre accolades une commande R.
#Inverse de %in%
`%notin%` <- function(x,y){ !(x %in% y) } 

a %notin% c(1, 3, 5)
[1] FALSE
c(1, 3, 5) %notin% a
[1] FALSE  TRUE  TRUE

2.2.2 Premier objet : les fonctions

1 2 3 4

  • Les fonctions de base de R permettent de faire beaucoup de choses, mais certains utilisateurs proposent parfois des fonctions très utiles.
  • Ces fonctions sont généralement partagées via des paquets (librairies).
  • Il faut parfois installer les parquets via la fonction install.packages().

2.2.2 Deuxième objet : le vecteur

1 2 3 4


Comme nous le verrons plus tard, R manipule différents types de données, mais le premier à voir est le type vector (ensemble indexé de valeurs de même type).


# Création d'un vecteur numérique
vec.num <- c(1, 2, 3, 4, 5)

# Création d'un vecteur de caractères
vec.cara <- c("Bonjour", "R", "Vecteurs")

2.2.2 Deuxième objet : le vecteur

1 2 3 4

Les vecteurs les plus simples à créer sont les séquences de nombres.

1:5;seq(1, 5)
[1] 1 2 3 4 5
[1] 1 2 3 4 5
seq(5, 1)
[1] 5 4 3 2 1
seq(1, 5, by = .5)
[1] 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0
seq(5, 1, length = 3)
[1] 5 3 1
class(1:5);class(seq(1, 5));class(seq(1, 5, by = .5));class(seq(5, 1, length = 3))
[1] "integer"
[1] "integer"
[1] "numeric"
[1] "numeric"

2.2.2 Deuxième objet : le vecteur

1 2 3 4

Combinaison de valeurs

a=1:5&95:99
a
[1] TRUE TRUE TRUE TRUE TRUE

Si on veut combiner des valeurs qui ne constituent pas une séquence, il est possible de créer un vecteur avec la fonction c(). Celle-ci prend toutes les valeurs en paramètres (sans limite spécifique) pour les mettre dans un même vector. Si ceux-ci sont de types différents (par exemple, numérique et caractère), elle transforme les valeurs numériques en chaînes de caractères.

x=0;a=c(1:5, x);a
[1] 1 2 3 4 5 0

Combinaison de valeurs

#Exemple des champs géographiques (départements de France)
#IDF
champ_idf = c('75', 77,78, 91:95)
champ_idf
[1] "75" "77" "78" "91" "92" "93" "94" "95"
#FR
champ_fr = sapply(c(01:19,21:95), function(x) paste0(paste(rep(0,2-nchar(x)), 
                                                              collapse = ""),x))
champ_fr = c(champ_fr,"2A","2B")
champ_fr
 [1] "01" "02" "03" "04" "05" "06" "07" "08" "09" "10" "11" "12" "13" "14" "15"
[16] "16" "17" "18" "19" "21" "22" "23" "24" "25" "26" "27" "28" "29" "30" "31"
[31] "32" "33" "34" "35" "36" "37" "38" "39" "40" "41" "42" "43" "44" "45" "46"
[46] "47" "48" "49" "50" "51" "52" "53" "54" "55" "56" "57" "58" "59" "60" "61"
[61] "62" "63" "64" "65" "66" "67" "68" "69" "70" "71" "72" "73" "74" "75" "76"
[76] "77" "78" "79" "80" "81" "82" "83" "84" "85" "86" "87" "88" "89" "90" "91"
[91] "92" "93" "94" "95" "2A" "2B"

2.2.2 Deuxième objet : le vecteur

1 2 3 4

Répétition de valeurs

Dans l’exemple des champs géographiques, j’utilise la fonction rep(vec, nb) qui permet de créer un vecteur répétant un certain nombre de valeurs indiqué dans nb. Si on veut répéter chaque valeur directement, on doit utiliser le paramètre each = (cf 3ème exemple). Et on peut combiner les deux écritures pour répéter chaque valeur 3 fois, et le vecteur ainsi créé deux fois (4ème exemple).

Répétition de valeurs

rep(5, 2)
[1] 5 5
rep(1:5, 2)
 [1] 1 2 3 4 5 1 2 3 4 5
rep(1:5, each = 3)
 [1] 1 1 1 2 2 2 3 3 3 4 4 4 5 5 5
rep(1:5, 2, each = 3)
 [1] 1 1 1 2 2 2 3 3 3 4 4 4 5 5 5 1 1 1 2 2 2 3 3 3 4 4 4 5 5 5

2.2.2 Deuxième objet : le vecteur

1 2 3 4

Concaténation de chaînes

Dans l’exemple des champs géographiques, j’utilise également la fonction paste(). Pour concaténer deux chaînes (i.e. les regrouper en une seule), nous avons à disposition la fonction paste() (et une version pré-paramétrée paste0()). Cette fonction prend en paramètres des vecteurs de chaînes pour les concaténer. Si les valeurs ne sont pas des chaînes, elles sont autoamtiquement tranformées.

Concaténation de chaînes

paste("bon", "jour")
[1] "bon jour"
paste("bon", "jour", sep = "-")
[1] "bon-jour"
paste("bon", "jour", sep = "")
[1] "bonjour"
paste0("bon", "jour")
[1] "bonjour"
paste0("bon", c("jour", "soir"))
[1] "bonjour" "bonsoir"
paste(c("x", "y"), 1:5, sep = "=")
[1] "x=1" "y=2" "x=3" "y=4" "x=5"
paste(1:5, collapse = ",")
[1] "1,2,3,4,5"

2.2.2 Deuxième objet : le vecteur

1 2 3 4

Exercices

  • Créer un vecteur v1 qui va de 1 à −1 par pas de −0.25
  • Créer un vecteur v2 qui va de 0 à 100 d’une longueur de 23
  • Créer un vecteur v3 qui contient les chaînes : “1ère année”, “2ème année”, “Master”
  • Créer un vecteur v4 qui répéte trois fois la chaîne “promo”
  • Regrouper les vecteurs v3 et v4, pour avoir le vecteur v5 suivant : “promo=1ère année” “promo=2ème année” “promo=LP”
  • Améliorer le code suivant pour avoir le vecteur v6 suivant : “promo=‘1ère année’” “promo=‘2ème année’” “promo=‘LP’”
  • Créer automatiquement le vecteur v7 qui suit : “x1” “y1” “x2” “y2” “x3” “y3” “x4” “y4” à l’aide des fonctions c(), seq(), paste(), rep()

2.2.2 Deuxième objet : le vecteur

1 2 3 4

Correction

2.2 Les bonnes pratiques

1 2 3 4

  • faire le ménage : rm(list=ls()) & rm(list=ls(pattern="..."))
  • commenter son code avec #
  • libérer la mémoire des objets qui ne sont plus utilisés dans l’environnement R : gc()

2.2.3 Troisième objet : les dataframes

1 2 3 4

  • Les dataframes sont des listes de vecteur de même dimension.
  • (Presque) toutes les fonctions qui s’appliquent aux vecteurs s’appliquent aux dataframes.

2.2.3 Les dataframes

1 2 3 4

  • Un dataframe n’est rien d’autre qu’un assemblage de vecteurs.
  • La fonction data.frame() permet de créer un dataframe ex-nihilo, avec quelques règles :
    • tous les vecteurs doivent contenir le même nombre d’éléments
    • tous les éléments d’un même vecteur doivent avoir le même type. Si ce n’est pas le cas, la fonction “forcera” le type du vecteur.

2.2.3 Les dataframes

1 2 3 4

Nom <- c("Magneto","Storm","Batman","Joker","Catwoman","Hellboy")
Type <- c("mechant","gentil","gentil","mechant","mechant","gentil")
Role <- c("mutant","mutante","heros",0,"heroine","heros")
Création <- c(1963, 1975, 1940, 1940, TRUE, 1994)

Superheros <- data.frame(Nom, Type, Role, Création, 
                         stringsAsFactors=FALSE)

Le paramètre stringsAsFactors est présent dans plusieurs fonctions de création de table et permet de déterminer si les chaînes de caractères doivent être traitées comme des facteurs ou comme des chaînes de caractères simples pour chaque colonne concernée. À partir de la version 4 de R, la valeur par défaut de ce paramètre est désormais FALSE.

2.2.3 Les dataframes

1 2 3 4

La fonction read.table() est une fonction de base en R qui permet de lire des fichiers texte avec des espaces comme séparateurs. Elle peut également lire à partir d’une chaîne de caractères, ce qui rend le code plus lisible :

Superheros <- read.table(text=
" Nom Type Role
Magneto mechant mutant
Storm gentil mutante
Batman gentil heros
Joker mechant heros
Catwoman mechant heroine
Hellboy gentil heros", header=TRUE, stringsAsFactors=FALSE)

Cependant, il est rare d’avoir à créer des dataframes de cette manière. Habituellement les données se trouvent dans des fichiers externes que l’on importe dans R.

APPLICATION

1 2 3 4