library(dplyr)
pam13 <- read.csv("../../data/pam13.csv")
pam <- pam13 |>
transmute(
sexe = factor(
Gender,
levels = c("women", "men"),
labels = c("Femmes", "Hommes")
),
age = Age,
taille = Length,
poids = Bodyweight,
imc = BMI,
tabagisme = factor(
Smoking,
levels = c("never", "former", "current"),
labels = c("Jamais", "Ancien", "Actuel")
),
pathologie = factor(
Disease,
levels = c("DM-II", "COPD", "HF", "CRD"),
labels = c("Diabète de type 2", "BPCO", "Insuffisance cardiaque", "Maladie rénale")
),
score_pam = activation_score
) |>
na.omit()Et avec R ?
En fin de chapitres, j’essaierai de faire une section propre à R. Ces sections n’ont pas pour but de vous enseigner R, ni de vous faire devenir des pros (vous l’êtes déjà). Ici, on a rassemblé des commandes qu’on trouve utiles et qu’on a utilisées au travers des chapitres ; et n’a donc pas pour but d’être exhaustif !
Préparer l’analyse
Installer et charger les packages
On peut tout faire sans bibliothèque en R ! Mais ne pas les utiliser, c’est se tirer une balle dans le pied … On conseille alors d’utiliser un maximum de packages pour éviter de réinventer la roue lors de vos analyses. Il existe des “cheatsheets”, des fiches de référence en gros, pour beaucoup de packages et qui résument les grandes fonctions. Pour les plus connus, on peut les trouver ici :
Pour utiliser un package, il faut d’abord l’installer. L’installation n’est à faire qu’une fois sur un ordinateur (ou à chaque fois que vous mettez R à jour), alors que le chargement avec library() est à refaire au début de chaque session R. Dans ce document, voici tout ce dont on a besoin :
install.packages(c(
# Importation de données et manipulation
"readxl", "haven", "dplyr", "tidyr",
# Description des données via des tables
"skimr", "gtsummary",
# Description des données via des graphiques
"patchwork", "ggplot2", "ggdist", "ggrepel", "ggstats", "ggstatsplot", "ggeffects",
"scales", # formater les axes des graphiques
# Test statistique
"car",
# Pour les modèles de régression
"broom", "performance",
# Pour l'analyse de survie
"survival", "survminer"
))Note : on peut aussi appeler ponctuellement une fonction sans charger tout le package. Pour cela, on écrit nom du package::nom de la fonction(). Exemple :
On va fréquemment le faire ici, afin que vous puissiez identifier d’où viennent les fonctions utilisées
Importer les données
Les données peuvent être dans plein de formats
# CSV
donnees <- read.csv(
"data/fichier.csv",
sep = ";", # séparateur de colonne ; "\t" = 4 espaces est aussi fréquent
dec = "," # séparateur décimal ; "." est aussi fréquent
)
# Excel
donnees <- readxl::read_excel("data/fichier.xlsx", sheet = "Feuille1")
# Fichier au format du logiciel SPSS (une alternative payante à R)
donnees <- haven::read_sav("data/fichier.sav")
# Fichier au format du logiciel R
donnees <- readRDS("data/fichier.rds")On peut rapidement vérifier ce qui a été importé, en regardant les 5 premières lignes du jeu de données :
Sélectionner, filtrer et créer des variables
Le symbole |> transmet le résultat d’une ligne à la fonction suivante : le code se lit de haut en bas. C’est - en gros - pareil que le pipe de dplyr (noté %>% et à prononcer “/paɪp/” comme en anglais), et on vous invite à savoir l’utiliser, car c’est vraiment pratique.
Par exemple, si
- on prend le jeu de données
donnees, - qu’on garde les colonnes
id,age,sexe,expositionetevenement, - qu’on ne conserve que les lignes où l’âge est supérieur ou égal à 18 ans,
- qu’on crée une nouvelle variable
age10égale à l’âge divisé par 10, - et qu’on recode une variable qualitative
expositionenfactoravec des étiquettes explicites,
on peut écrire :
analyse <- donnees |>
select(id, age, sexe, exposition, evenement) |> # select = prendre des colonnes
filter(age >= 18) |> # filter = ne garder que certaines lignes
mutate( # mutate = créer une colonne, ou en modifier une
age10 = age / 10,
exposition = factor(
exposition,
levels = c(0, 1),
labels = c("Non exposé", "Exposé")
)
)Le premier niveau du facteur est généralement la modalité de référence. Pour une régression logistique dont la réponse est un facteur à deux niveaux, R modélise la probabilité du second niveau.
Décrire les données
Une fois le jeu de données bien importé, on peut facilement avoir une première description grâce à la librairie skimr ! Pour cela, on écrit :
Cette fonction est très pratique : elle donne le nombre de lignes / colonnes, le type de chacune des colonnes, et pour chaque variable, un descriptif !
Comme tout, on peut faire ça à la main. En vrac, voici quelques commandes utiles :
# Variables quanti
mean(x, na.rm = TRUE)
sd(x, na.rm = TRUE)
median(x, na.rm = TRUE)
quantile(x, probs = c(0.25, 0.50, 0.75), na.rm = TRUE)
IQR(x, na.rm = TRUE)
range(x, na.rm = TRUE)
# Variables quali
table(x, useNA = "ifany")
prop.table(table(x))
round(100 * prop.table(table(x)), 1) # = pourcentages, arrondi au dixièmeAutre
Le package janitor est vachement utile quand vous avez des données brutes (autant dire, souvent dégueu), avec des noms de colonnes pas très propres. Il permet, avec peu de commandes, d’enlever les espaces / chiffres / caractères spéciaux, de mettre les noms en minuscules, et j’en passe !