Ce document est à utiliser comme une table de référence, qui peut être consultée ponctuellement ou servir de support à des révisions.
Quelques rappels sur le langage R.
Opérateur | Rôle | Exemple |
---|---|---|
+ |
Addition | 1+1 |
- |
Soustraction | 1-1 |
/ |
Division | 1/1 |
* |
Multiplication | 1*1 |
^ |
Puissance | 10^2 |
Symbole | Rôle | Exemple |
---|---|---|
<- |
Assignation à une variable | animaux <- c("chien", "chat") |
() |
Exécution d’une fonction. Contient souvent des arguments | c(1, 2, 3) |
[] |
Sélection d’un sous-ensemble dans une variable, une base de données, etc. | animaux[1] |
$ |
Sélection d’une variable dans un data.frame | bdd$genre |
# |
Commentaire : ignorer ce qui suit | # Test |
= |
Assignation d’un argument dans une fonction | mean(x, na.rm = TRUE) |
~ (tilde) |
Signe qui peut avoir plusieurs significations selon le contexte | boxplot(heures.tv ~ sexe, data = hdv2003) |
, |
Séparer des arguments d’une fonction | table(hdv2003$sexe, hdv2003$cuisine) |
Exemples d’utilisation des commentaires :
# Cette ligne n'est pas interprétée par R
c("chien", "chat") # Fonction
Exemples d’utilisation des parenthèses et des crochets :
[1] \chien\
chien
# En revanche :
animaux(1)
Touches | Fonction |
---|---|
Ctrl+Entrée | Exéuter la ligne où se trouve le curseur |
Ctrl+Entrée | Exéuter les lignes sélectionnées |
Ctrl+L | Effacer la console |
Tab | Obtenir les suggesions de complétion |
Ctrl+S | Sauvegarder le fichier |
Exemple parmi d’autres, avec ici le nom des fonctions :
# Cette fonction est connue de R
factor(c(\chien\, \chat\))
[1] chien chat
Levels: chat chien
# Mais si on fait une erreur de casse :
Factor(c(\chien\, \chat\))
De même pour les variables
chien
chat
# Mais si on fait une erreur de casse :
Animaux
Dans les noms de variables et de fonctions, les seuls caractères employés sont :
_
et points .
Attention à ne JAMAIS employer d’espaces.
Pour identifier un type de données, on peut utiliser la fonction typeof()
.
Notation | Rôle | Exemple |
---|---|---|
1234 |
Un nombre (“double”) | 1 |
"" ou '' |
Chaîne de caractères | "animaux" |
NA |
Absence de données | NA |
Résultats de la fonction typeof()
:
typeof(1)
[1] "double"
Warning message:
In scan(file = file, what = what, sep = sep, quote = quote, dec = dec, :
Fin de fichier (EOF) dans une chaîne de caractères entre guillements
typeof("1")
[1] "character"
typeof(NA)
[1] "logical"
Le type de données doit être bien compris sous peine d’erreurs !
# Ce calcul fonctionne :
1+1
[1] 2
# Mais...
1+\1\
Pour identifier une structure de données, on peut utiliser la fonction str()
.
Nom | Fonction | Concept équivalent en statistiques |
---|---|---|
vector | c() |
Variable |
factor | factor() |
Variable qualitative |
data.frame | data.frame() |
Base de données |
Le concept de vecteur (suite de données de même type) dans R est proche de celui de variable en statistiques (série de données homogènes sur des individus), même si tous les vecteurs ne sont pas forcément des variables au sens statistique.
c(1,2,3,4) # Équivalent à une variable quantitative
[1] 1 2 3 4
str(c(1,2,3,4))
num [1:4] 1 2 3 4
c(\homme\, \femme\, \homme\) # Série de données textuelles
[1] \homme\ \femme\ \homme\
homme
femme
homme
str(c(\homme\, \femme\, \homme\))
chr [1:3] \homme\ \femme\ \homme\
Manipulation des vecteurs :
[1] \homme\
homme
genre[1:2]
[1] \homme\ \femme\
homme
femme
genre[c(1, 3)]
[1] \homme\ \homme\
homme
homme
Les facteurs sont un type particulier de vecteurs dans R, de la même façon que les variables qualitatives sont un type de variable particulier.
Dans R | En statistiques |
---|---|
factor | Variable qualitative |
levels | Modalités de la variable |
Pour voir les modalités (levels
) :
levels(genre.f)
[1] \femme\ \homme\
femme
homme
C’est l’équivalent d’une base de données en statistiques : une série de variables sur les mêmes individus.
Pour sélectionner une variable en particulier :
bdd$variable1
Les fonctions sont un concept central des langages de programmation… et donc de R !
Toujours sous la forme :
nomDeLaFonction(arguments)
Décomposition :
nomDeLaFonction
: nom de la fonction à appeler()
: les parenthèses signifient qu’on demande à R d’éxéuter la fonction.arguments
: une liste d’arguments séparés par des virgules et une espace. Le nombre d’arguments dépend des fonctions.Fonction qui n’a besoin d’aucun argument :
getwd()
La fonction c()
accepte un nombre illimité d’arguments :
c(1, 2, 3, 4)
Certaines fonctions ont des arguments obligatoires :
mean()
Mais si on donne l’argument obligatoire, tout se passe bien :
notes <- c(10, 20)
mean(notes)
Certaines fonctions prennent des arguments falcutatifs, qui peuvent être nommés. Dans ce cas, le nom de l’argument est suivi d’un signe =
puis de sa valeur.
notes <- c(10, 20, NA)
# Sans l'argument facultatif na.rm :
mean(notes)
# Avec l'argument facultatif na.rm :
mean(notes, na.rm = TRUE)
Il est bien sûr possible d’imbriquer nos fonctions :
mean(c(c(10, 20), NA), na.rm = TRUE)
Ce qui est identique à :
notes <- c(10, 20)
notes2 <- c(notes, NA)
mean(notes2, na.rm = TRUE)
Pour comprendre les fonctions imbriquées, il faut donc procéder par étapes, en partant de l’intérieur des parenthèses pour aller vers l’extérieur.
Dans un langage de programmation, les variables permettent d’atteindre un niveau d’abstraction supplémentaire, en attribuant un nom à un objet pour le réutiliser par la suite. Elles améliorent également la lisibilité du programme.
variable <- "coucou"
variable
Attention aux erreurs de notation !
variable
# Mais...
"variable"
Attention : le concept de variable informatique est très différent de variable statistique. En effet, une variable informatique peut stocker n’importe quel type de données, alors qu’une variable statistique correspond à une série de données homogènes collectées sur des individus.
Les deux concepts se recoupent parfois :
notes <- c(10, 20, 16)
Ici, la variable notes
peut correspondre à une variable statistique.
En revanche :
test <- mean(notes)
Dans ce cas, la variable informatique test
contient la moyenne des notes, ce qui n’est pas équivalent à une variable au sens statistique.
Ci-après, une liste des fonctions les plus courantes dans R. Les exemples donnés sont très succincts : reportez-vous aux supports de cours pour des “vrais” exemples plus développés.
Nom de la fonction | Utilité | Exemple |
---|---|---|
install.packages |
Installer un paquet R | install.packages("questionr") |
library |
Charger un paquet R en mémoire | library(questionr) |
Nom du paquet | Utilité |
---|---|
dplyr |
Paquet R permettant des recodages très avancés |
questionr |
Paquet R français adapté aux enquêtes de sciences sociales, avec des fonctions utiles pour produire simplement des tableaux croisés, des tris à plat, etc. |
tidyverse |
Ensemble de paquets utiles pour la manipulation de données |
titanic |
Paquet contenant plusieurs jeux de données sur les passagers du titanic |
Nom de la fonction | Utilité | Exemple |
---|---|---|
data |
Charger des données déjà présentes dans R ou dans des paquets | data(hdv2003) |
read.csv |
Charger des données depuis un fichier. Attention, le chemin vers votre fichier dépend de votre ordinateur et de votre système d’exploitation. | read.csv('/chemin/vers/le/fichier.csv') |
Nom de la fonction | Utilité | Exemple |
---|---|---|
glimpse |
Avoir un aperçu rapide d’une variable ou d’une base de données (nombre de lignes, de colonnes, nom, type et aperçu des valeurs des variables) | glimpse(hdv2003) |
levels |
Liste des modalités (levels ) des variables qualitatives (factor ) |
levels(hdv2003$sexe) |
names |
Liste des noms de variables dans une base de données | names(hdv2003) |
ncol |
Nombre de colonnes dans une base de données | ncol(hdv2003) |
nrow |
Nombre de lignes dans une base de données | nrow(hdv2003) |
summary |
Avoir un aperçu rapide d’une variable, avec statistiques descriptives sommaires selon le type de la variable | summary(hdv2003$sexe) |
Nom de la fonction | Utilité | Exemple |
---|---|---|
addmargins |
Calcul des marges d’un tableau | addmargins(table(hdv2003$sexe, hdv2003$cuisine)) |
cor |
Calcul du R de Pearson | cor(hdv2003$age, hdv2003$freres.soeurs) |
cprop |
Fréquences en colonne d’un tableau croisé | cprop(table(hdv2003$sexe, hdv2003$cuisine)) |
freq |
Tri à plat avec fréquences, avec ou sans NAs | freq(hdv2003$sexe) |
lprop ou rprop |
Fréquences en ligne d’un tableau croisé | lprop(table(hdv2003$sexe, hdv2003$cuisine)) |
mean |
Calcul de la moyenne | mean(hdv2003$age) |
median |
Calcul de la médiane | median(hdv2003$age) |
prop |
Fréquences totales d’un tableau croisé | prop(table(hdv2003$sexe, hdv2003$cuisine)) |
quantile |
Calcul des quartiles | quantile(hdv2003$age) |
sd |
Calcul de l’écart-type | sd(hdv2003$age) |
summary |
Fonction “à tout faire” pour les statistiques descriptives univariées | summary(hdv2003$sexe) |
table |
Tri à plat ou tri croisé d’une variable ou de deux variables | table(hdv2003$sexe, hdv2003$cuisine) |
var |
Calcul de la variance | var(hdv2003$age) |
Nom de la fonction | Utilité | Exemple |
---|---|---|
barplot |
Diagramme en barres d’une variable | barplot(hdv2003$sexe) |
boxplot |
Boîte à moustaches simple ou multiples | boxplot(hdv2003$sexe) ou boxplot(heures.tv ~ sexe, data = hdv2003) |
hist |
Histogramme d’une variable quantitative | hist(hdv2003$age) |
mosaicplot |
Diagramme en mosaïques | mosaicplot(sexe ~ cuisine, data = hdv2003)) |
plot |
Fonction “à tout faire” pour les graphiques : produit des graphiques différents selon le(s) variables données en argument. Utile pour faire des nuages de points par exemple. | plot(hdv2003$age) |
Nom de la fonction | Utilité | Exemple |
---|---|---|
case_when |
Utilisable pour tout type de recodage | Voir plus bas |
fct_collapse |
Recodage des modalités d’une variable | Voir plus bas |
as.factor |
Convertir une variable en facteur | as.factor(hdv2003$freres.soeurs) |
as.numeric |
Convertir une variable en variable numérique | as.numeric(hdv2003$freres.soeurs) |
as.character |
Convertir une variable en variable textuelle | as.character(hdv2003$freres.soeurs) |
case_when
Cette syntaxe est un peu compliquée, mais permet d’effectuer quasiment tous les recodages envisageables. La syntaxe est la suivante :
base_de_donnees <- mutate(base_de_donnees,
nouveau_nom_variable = case_when(
condition 1 ~ nouvelle valeur 1,
condition 2 ~ nouvelle valeur 2,
TRUE ~ valeur par défaut
))
Avec cette syntaxe, on peut notamment faire des recodages :
fct_collapse
On peut également envisager d’utiliser fct_collapse
pour regrouper des modalités d’une variable qualitative :
mines$prenom1_f <- fct_collapse(mines$prenom1_f,
"Jean-Philippe" = c("Jean- Phillipe"), # Recoder "Jean- Phillipe" en "Jean-Philippe"
"Philippe" = c("Phillipe", "Phillippe") # Recoder "Phillipe" et "Phillippe" en "Philippe"
)
Seule fonction à connaître ici : chisq.test
qui prend en argument un tableau croisé en effectifs.
library(questionr)
data(hdv2003)
table1 <- table(hdv2003$sexe, hdv2003$cuisine)
chisq.test(table1)