pos variable label col_type missing values
1 trt Chemotherapy Treatment chr 0
2 age Age dbl 11
3 marker Marker Level (ng/mL) dbl 10
4 stage T Stage fct 0 T1
T2
T3
T4
5 grade Grade fct 0 I
II
III
6 response Tumor Response int 7
7 death Patient Died int 0
8 ttdeath Months to Death/Censor dbl 0
11 Étiquettes de variables
11.1 Principe
Les étiquettes de variable permettent de donner un nom long, plus explicite, aux différentes colonnes d’un tableau de données (ou encore directement à un vecteur autonome). Dans le champs des grandes enquêtes, il est fréquent de nommer les variables q101, q102, etc. pour refléter le numéro de la question et d’indiquer ce qu’elle représente (groupe d’âges, milieu de résidence…) avec une étiquette.
Un usage, introduit par le package haven, et repris depuis par de nombreux autres packages dont gtsummary que nous aborderons dans de prochains chapitres, consiste à stocker les étiquettes de variables sous la forme d’un attribut1 "label"
attaché au vecteur / à la colonne du tableau.
1 Pour plus d’information sur les attributs, voir Chapitre 6.
Le package labelled permet de manipuler aisément ces étiquettes de variables.
La visionneuse de données de RStudio sait reconnaître et afficher ces étiquettes de variable lorsqu’elles existent. Prenons pour exemple le jeu de données gtsummary::trial
dont les colonnes ont des étiquettes de variable. La commande View(gtsummary::trial)
permet d’ouvrir la visionneuse de données de RStudio. Comme on peut le constater, une étiquette de variable est bien présente sous le nom des différentes colonnes.
La fonction labelled::look_for()
du package labelled permet de lister l’ensemble des variables d’un tableau de données et affiche notamment les étiquettes de variable associées.
La fonction labelled::look_for()
permet également de rechercher des variables en tenant compte à la fois de leur nom et de leur étiquette.
pos variable label col_type missing values
8 ttdeath Months to Death/Censor dbl 0
Comme on le voit, la fonction labelled::look_for()
est tout à fait adaptée pour générer un dictionnaire de codification. Ses différentes options sont détaillées dans une vignette dédiée. Les résultats renvoyés par labelled::look_for()
sont récupérables dans un tableau de données que l’on pourra ainsi manipuler à sa guise.
# A tibble: 8 × 7
pos variable label col_type missing levels value_labels
<int> <chr> <chr> <chr> <int> <named li> <named list>
1 1 trt Chemotherapy Treatment chr 0 <NULL> <NULL>
2 2 age Age dbl 11 <NULL> <NULL>
3 3 marker Marker Level (ng/mL) dbl 10 <NULL> <NULL>
4 4 stage T Stage fct 0 <chr [4]> <NULL>
5 5 grade Grade fct 0 <chr [3]> <NULL>
6 6 response Tumor Response int 7 <NULL> <NULL>
7 7 death Patient Died int 0 <NULL> <NULL>
8 8 ttdeath Months to Death/Censor dbl 0 <NULL> <NULL>
11.2 Manipulation sur un vecteur / une colonne
La fonction labelled::var_label()
permets de voir l’étiquette de variable attachée à un vecteur (renvoie NULL
s’il n’y en a pas) mais également d’ajouter/modifier une étiquette.
Le fait d’ajouter une étiquette de variable à un vecteur ne modifie en rien son type ni sa classe. On peut associer une étiquette de variable à n’importe quel type de variable, qu’elle soit numérique, textuelle, un facteur ou encore des dates.
NULL
[1] "Mon étiquette"
num [1:5] 1 5 2 4 1
- attr(*, "label")= chr "Mon étiquette"
[1] "Une autre étiquette"
num [1:5] 1 5 2 4 1
- attr(*, "label")= chr "Une autre étiquette"
Pour supprimer une étiquette, il suffit d’attribuer la valeur NULL
.
On peut appliquer labelled::var_label()
directement sur une colonne de tableau.
var_label(iris$Petal.Length) <- "Longueur du pétale"
var_label(iris$Petal.Width) <- "Largeur du pétale"
var_label(iris$Species) <- "Espèce"
iris |>
look_for()
pos variable label col_type missing values
1 Sepal.Length — dbl 0
2 Sepal.Width — dbl 0
3 Petal.Length Longueur du pétale dbl 0
4 Petal.Width Largeur du pétale dbl 0
5 Species Espèce fct 0 setosa
versicolor
virginica
11.3 Manipulation sur un tableau de données
La fonction labelled::set_variable_labels()
permets de manipuler les étiquettes de variable d’un tableau de données avec une syntaxe du type dplyr.
iris <-
iris |>
set_variable_labels(
Species = NULL,
Sepal.Length = "Longeur du sépale"
)
iris |>
look_for()
pos variable label col_type missing values
1 Sepal.Length Longeur du sépale dbl 0
2 Sepal.Width — dbl 0
3 Petal.Length Longueur du pétale dbl 0
4 Petal.Width Largeur du pétale dbl 0
5 Species — fct 0 setosa
versicolor
virginica
11.4 Préserver les étiquettes
Certaines fonctions de R ne préservent pas les attributs et risquent donc d’effacer les étiquettes de variables que l’on a définit. Un exemple est la fonction générique subset()
qui permet de sélectionner certaines lignes remplissant une certaines conditions.
pos variable label col_type missing values
1 Sepal.Length Longeur du sépale dbl 0
2 Sepal.Width — dbl 0
3 Petal.Length Longueur du pétale dbl 0
4 Petal.Width Largeur du pétale dbl 0
5 Species — fct 0 setosa
versicolor
virginica
pos variable label col_type missing values
1 Sepal.Length — dbl 0
2 Sepal.Width — dbl 0
3 Petal.Length — dbl 0
4 Petal.Width — dbl 0
5 Species — fct 0 setosa
versicolor
virginica
On pourra, dans ce cas précis, préférer la fonction dplyr::filter()
qui préserve les attributs et donc les étiquettes de variables.
pos variable label col_type missing values
1 Sepal.Length Longeur du sépale dbl 0
2 Sepal.Width — dbl 0
3 Petal.Length Longueur du pétale dbl 0
4 Petal.Width Largeur du pétale dbl 0
5 Species — fct 0 setosa
versicolor
virginica
On pourra également tirer parti de la fonction labelled::copy_labels_from()
qui permet de copier les étiquettes d’un tableau à un autre.
pos variable label col_type missing values
1 Sepal.Length Longeur du sépale dbl 0
2 Sepal.Width — dbl 0
3 Petal.Length Longueur du pétale dbl 0
4 Petal.Width Largeur du pétale dbl 0
5 Species — fct 0 setosa
versicolor
virginica