knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>",
  echo = TRUE
)

Bien se préparer à coder

C'est parti pour les commandes de base !

Le(s) prompt(s)

Une commande, c'est quoi ?

C'est une séquence d'opérations appliquées à des objets ou des valeurs qui sera donnée au compilateur de R pour interprétation.

Une fois la commande écrite dans la console, on l'exécute en appuyant sur "Entrée".

Exercice

Exécutez les commandes suivantes :

  1. 1 + 1
  2. 1+1
  3. log(10)
  4. log10(10)

Remarquez l'utilisation des parenthèses pour appliquer une fonction !

Opérations de base

On peut effectuer toutes les opérations de base en R :

appliquer les fonctions mathématiques de base :

On peut combiner les opérations et les fonctions, et gérer les priorités avec des parenthèses !

Exercice

Imaginez une commande incluant le plus d'opérations et de fonctions de base et dont le résultat serait 2 !

Un opérateur bien pratique, le :

Comment créer une suite d'entier ?

L'opérateur : est très utilisé en R. Sa syntaxe est la suivante

Attention à bien mettre des parenthèses dans le cas d'entiers négatifs!

Exemples

Exercice

  1. Créez un vecteur d'entiers de 0 à 3
  2. Créez un autre vecteur d'entiers de 3 à 1
  3. Combinez ces deux suites pour obtenir le vecteur suivant :
pander::pandoc.table(c(3:1, 0:3))

Assignation avec <-

Comment "sauvegarder" ces objets ?

En utilisant l'opérateur d'assignation

library(ggplot2)
data.frame(x = 0, y = 0, lab = "<-") |>
  ggplot(aes(x, y, label = lab)) + 
  geom_text(size = 50, family = "Courier", fontface = "bold") + 
  theme_void() + 
  theme(plot.margin = unit(c(0, 0, 0, 0), "cm"))

Utilisation de l'opération d'assignation

Les noms d'objets {.smaller}

Règles absolues :

Bonnes pratiques :

Mini exercice

  1. Créez un vecteur d'entiers de 0 à 3, appelez le a
  2. Créez un autre vecteur d'entiers de 3 à 1, appelez le b
  3. Combinez ces deux vecteurs pour obtenir un vecteur ab selon le modèle suivant :
pander::pandoc.table(c(3:1, 0:3))

Opérations

On peut appliquer des opérations à ces "vecteurs" !

a <- 1:5
a + 1
a * 2

Ces "vecteurs" sont des objets.

Les Objets

Classes d'objets

Nom | Appelation officielle | Exemple ---|---|--- Vecteur | ??? | 1:10 Facteur | factor | gl(2, 2) Matrice | matrix | matrix(1:4, 2, 2)
Tableau | data.frame | mtcars
Liste | list | list(a = 1, b = 1:10, c = "Hello!") Fonction | function | sin, exp, log

Pour connaître la classe d'un objet : class(objet).

Types de données

Nom | Appellation officielle | Exemple ---|---|--- Entier ($\mathbb Z$) | integer | 1:10, (ou 1L) Réel ($\mathbb R$) | double | 2.3, 1/3, etc... Caractères | character | month.name, "Bonjour" Booléen | logical | TRUE

Bouh les quoi ?

MATH., néol. Qui est relatif aux théories du logicien et mathématicien anglais George Boole.

-- Trésor de la Langue Française informatisé

Exercice

  1. Effectuez les opérations suivantes :
  2. 1 == 2
  3. !(5 > -6)
  4. (1 <= 10) | (1 > 0)

Prédisez le résultat de la commande suivante : log(1) != 0

"Classification" des objets

Les objets qui ne contiennent qu'un seul type de données : vecteurs et matrices.

Les objets pouvant contenir des données mixtes : tableaux et listes.

La flexibilité a un coût : on ne peut plus faire certaines opérations !

Les objets ayant des "dimensions" : vecteurs, tableaux et matrices

Les objets pour qui cela ne signifie rien ou presque : listes et fonctions

Petit détour par les tableaux {.smaller}

data("fruits", package = "minidebuter")
dim(fruits)
nrow(fruits)
ncol(fruits)

Juste le début de la table {.smaller}

head(fruits)
print.data.frame(head(fruits))

Toute la table {.smaller}

fruits
print.data.frame(fruits)

Importer des données en R

Les données "de R"

Utilisation des guillemets

Explorer les données fruits

data.frame(x = c(0, 1, 0, 1), y = c(1, 1, 0, 0), lab = c("[ ]", "[ , ]", "[[ ]]", "$")) |> 
  ggplot(aes(x, y, label = lab, color = lab)) + 
  geom_text(aes(hjust = x, vjust = y), size = 20, family = "Courier", fontface = "bold", show.legend = FALSE) + 
  theme_void() + 
  theme(plot.margin = unit(c(0, 0, 0, 0), "cm"))

Sur quels objets les utiliser ?

Opérateur | Vecteurs | Matrices | Tableaux | Listes ----------|:--------:|:--------:|:--------:|:------: [ ] | x | | x | x [ , ] | | x | x |
[[ ]] | | | x | x $ | | | x | x

L'opérateur de sélection classique : [ , ]

Exercice

Comment faire pour sélectionner les fruits numéro 1, 3 et 5 ?

Je veux deux solutions : une "normale" et une "créative" !

Sélectionner plusieurs lignes / colonnes

De l'utilité des deux points

Pour sélectionner une plage entière de lignes ou de colonnes adjacentes :

Exercice

Que se passe-t-il quand on oublie les parenthèses dans la commande fruits[-(1:3), ] ? Commentez !

Faites de même avec le jeu de données mtcars.

Pour extraire une seule colonne : le $

La syntaxe donnees$cible permet de sélectionner la colonne cible du tableau donnees.

N.B: la selection de la colonne sert soit à récupérer le contenu de cette colonne soit à créer la colonne ou remplacer son contenu. Par exemple : fruits$num <- 1:nrow(fruits)

Exercice

Extrayez la colonne de la teneur en sucres de la table des fruits... de deux façons différentes !

Créez un objets contenant la teneur en sucres : quelle est la classe de cet objet ?

Les vecteurs...

Exemples :

Exercice

Créez un vecteur groupe contenant les groupes de fruits. Donnez deux façons différentes d'extraire les dix premières valeurs de ce vecteur.

Extraction avec des Booléens

Comment extraire les fruits ... * dont la teneur en eau est supérieure à 60 ? * exotiques ? * secs contenant moins de 40g/100g de sucres ?

Réponse : en utilisant des vecteurs booléens

  1. Créer le vecteur de booléens fruits$Eau >= 60
  2. Utiliser le résultat dans les crochets carrés fruits[fruits$Eau >= 60, ]

Ne pas oublier la virgule !

Le principe

Pour un vecteur v :

Pour un tableau tab :

Attention

Vous verrez souvent des opérations logiques à l'intérieur des crochets carrés : cela permet d'aller plus vite !

Par exemple, en deux étapes :

  1. bool <- fruits$groupe == "secs" & fruits$Sucres < 40
  2. fruits[bool, ]

Devient, en une étape :

Attention bis

On peut combiner deux méthodes d'extraction de données pour un tableau : une sur les lignes et une sur les colonnes !

Par exemple : tab[brow, icol], où brow est un vecteur de booléens et icol un vecteur d'indices.

Exercice

Construisez la sous-table contenant la teneur en protéines, en glucides et en lipides des fruits secs.

Les objets nommés

En R, on peut donner des "noms"...

Pourquoi ? Pour pouvoir disposer d'une nouvelle méthode d'extraction de données !

Pour un tableau

On utilise :

Et, en bonus, on peut :

Et, en super bonus, on peut :

Modifier un objet ou son contenu

La syntaxe obj[i] <- newvalue (et ses variations) peut être utilisée pour tous les types d'objets indiçables. Mais il faut l'utiliser avec prudence !

Exemple : fruits$Energie[1:10] <- 0

Que s'est-il passé ? Au secours !!!!

Pour revenir en arrière : data("fruits", package = "minidebuter")

Extraction avec des noms

Exemple :

Bilan

Mode d'extraction | Exemples ---|--- Indices | fruits[, 2] Booléens | fruits[fruits$nom == "Abricot", ] Noms | fruits$nom ou fruits[,"nom"]

Exercice

Lister le maximum de façons possibles d'extraire du tableau fruits les fruits crus sucrés riches en Vitamine C !

Construire ses propres objets

Vecteurs et facteurs

Les facteurs sont une particularité de R !

Matrices et tableaux

Ajouter des noms

Directement à la création de l'objet. Ex: x <- c(a = 1, b = 2), d <- data.frame(a = 1:26, b = letters)

Ou bien après la création de l'objet :

Exercice

Créez un facteur à partir des groupes de fruits, puis testez la commande suivante :

factor(fruits$groupe, levels = c("secs", "compote", "crus", "exotique"))

Que se passe-t-il ? Sauvez le résultat dans un objet et faites un diagramme en bâton avec ! Commentez !

Estimation ponctuelle

Définition {.smaller}

Il s'agit d'estimer un caractéristique statistique d'un ensemble de données avec une seule valeur.

Paramètre | Grandeur statistique | Commande ---|---|--- Position | Moyenne | mean Position | Médiane | median Position | Minimum | min Position | Maximum | max Dispersion | Variance | var Dispersion | Ecart-type | sd Dispersion | Intervalle inter-quartiles | IQR Lien | Covariance | cov Lien | Corrélation | cor

Rappel : la covariance

Permet de mesurer le degré de co-variation de deux variables :

[ \operatorname{cov}(x, y)=\frac{1}{n-1} \sum_{i=1}^{n}\left(x_{i}-m_{x}\right)\left(y_{i}-m_{y}\right) ]

Rappel : corrélation de Pearson

C'est une covariance normalisée entre -1 et 1 !

[ \operatorname{cor}(x, y)=\frac{\operatorname{cov}(x, y)}{\sqrt{\operatorname{var}(x)} \sqrt{\operatorname{var}(y)}} ]

Rappel : corrélation de Spearman

C'est la corrélation (de Pearson) calculée sur les rangs !

[ \rho = \operatorname{cor}(r_x, r_y), ] avec $r_x$ le vecteur des rangs de $x$ (rank(x)), et $r_y$ le vecteur des rangs de $y$ (rank(y)).

Rappel (?) : corrélation de Kendall

[ \tau = \displaystyle \frac{n_C - n_D}{n_0}, ] avec $n_C$ le nombre de paires concordantes, $n_D$ le nombre de paires discordantes et $n_0$ le nombre total de paires de points.

Exercice

Calculez

Appliquez la fonction summary aux données fruits.

Les fonctions astucieuses

D'autres fonctions très utilies

Les graphes de base

La fonction barplot

Permet de réaliser des diagrammes en bâtons :

barplot(table(fruits$groupe))

La fonction hist

Permet de réaliser des histogrammes :

hist(fruits$Eau)

La fonction plot

Permet de tracer des nuages de points :

plot(fruits$Eau, fruits$Sucres)

Exercice

Faire un histogramme de la teneur en Vitamine C des fruits crus.



vguillemot/debuter documentation built on Oct. 8, 2024, 10:47 p.m.