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 :

Format de données large ou long

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

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *