Comment utiliser la fonction melt() dans R
Vous pouvez utiliser la fonction melt() du package reshape2 dans R pour convertir une trame de données d’un format large en un format long.
Un format large contient des valeurs qui ne se répètent pas dans la première colonne.
Un format long contient des valeurs qui se répètent dans la première colonne.
Par exemple, considérons les deux ensembles de données suivants qui contiennent exactement les mêmes données exprimées dans des formats différents :
La fonction melt() utilise la syntaxe de base suivante pour convertir une trame de données au format large en format long :
melt(df, id='team')
L’argument id spécifie quelle variable utiliser comme première colonne du bloc de données dont les valeurs seront répétées.
L’exemple suivant montre comment utiliser cette fonction dans la pratique.
Exemple : Comment utiliser melt() dans R
Supposons que nous ayons le bloc de données suivant dans R qui est actuellement dans un format large :
#create data frame in wide format df <- data.frame(team=c('A', 'B', 'C', 'D'), points=c(88, 91, 99, 94), assists=c(12, 17, 24, 28), rebounds=c(22, 28, 30, 31)) #view data frame df team points assists rebounds 1 A 88 12 22 2 B 91 17 28 3 C 99 24 30 4 D 94 28 31
Nous pouvons utiliser la fonction melt() pour convertir rapidement le bloc de données dans un format long :
library(reshape2) #use melt() to convert data frame from wide to long format long_df <- melt(df, id='team') #view long data frame long_df team variable value 1 A points 88 2 B points 91 3 C points 99 4 D points 94 5 A assists 12 6 B assists 17 7 C assists 24 8 D assists 28 9 A rebounds 22 10 B rebounds 28 11 C rebounds 30 12 D rebounds 31
Notez que le bloc de données est désormais dans un format long.
Les colonnes points , passes décisives et rebonds ont toutes été compressées dans une seule colonne appelée variable tandis que leurs valeurs ont toutes été compressées dans une seule colonne appelée valeurs .
N’hésitez pas à renommer les colonnes du bloc de données résultant en utilisant la fonction names() :
#rename columns in long_df names(long_df) <- c('team', 'metric', 'amount') #view updated data frame long_df team metric amount 1 A points 88 2 B points 91 3 C points 99 4 D points 94 5 A assists 12 6 B assists 17 7 C assists 24 8 D assists 28 9 A rebounds 22 10 B rebounds 28 11 C rebounds 30 12 D rebounds 31
Notez que les colonnes ont été renommées.
Ressources additionnelles
Les didacticiels suivants expliquent comment effectuer d’autres tâches courantes dans R :
Comment filtrer les lignes dans R
Comment transposer une trame de données dans R
Comment renommer les colonnes du bloc de données dans R