Accéder au contenu principal

Long to Wide Data in R

Learn why you would transform your data from a long to a wide format and vice versa and explore how to do this in R with melt() and dcast()!
Actualisé 19 sept. 2026  · 15 min lire

Explorer avec l’IA

ChatGPTClaudePerplexity

    

Il arrive souvent de devoir convertir des données du format long (appelé ici « long-form », dont le sens deviendra clair plus loin) au format large, et inversement. Dans la vraie vie, les données arrivent sous toutes sortes de formats, mais la plupart des fonctions R sont conçues pour un format précis.

Par exemple, lme4::lmer() pour les modèles linéaires mixtes, ou ggplot2::ggplot() pour la visualisation, sont conçues pour le format long. À l’inverse, d’autres fonctions, comme mosaicplot(), attendent un format large. Concrètement, vous devrez convertir le format pour analyser ou visualiser, sauf si les données sont déjà préparées dans le bon format.

R propose plusieurs options pour convertir les formats, ce qui peut être déroutant quand on débute.

Ce tutoriel vous aide à comprendre la mécanique de conversion entre format long et format large. Vous allez aborder les points suivants :

  • Découvrir en détail le format long.
  • Comprendre ensuite le format large.
  • Revoir les différences entre les deux formats.
  • Identifier les étapes à suivre pour passer de l’un à l’autre.
  • Enfin, mettre tout cela en pratique avec R : passer du long au large et inversement grâce aux fonctions melt() et dcast().

Les données

Tableau 01
name gender year2011 year2012 year2013 year2014 year2015
Jackson Smith M 74.69 84.99 91.73 105.11 111.04
Sophia Johnson F NA NA NA NA 75.89
Emma Williams F NA NA 75.74 86.50 91.50
Aiden Jones M NA NA NA 71.89 81.42
Liam Brown M 88.24 96.91 101.85 108.13 112.45
Lucas Davis M 70.60 83.78 94.17 100.03 106.35
Olivia Miller F 64.78 80.76 87.30 97.13 103.80
Ava Wilson F 88.77 96.45 104.72 112.84 NA

Ce tableau indique la taille de bébés dans une petite zone géographique, mesurée de 2011 à 2015. Comme vous le savez sans doute, NA signifie « non disponible ». À partir de la position des NA, on peut déduire l’âge des bébés, mais l’âge exact n’apparaît pas dans le tableau. Il semble bien organisé, mais pour étudier la croissance, l’information clé n’est pas la date de mesure absolue, c’est l’âge de l’enfant au moment de la mesure. Pourriez-vous ajouter cette information ? Voici une possibilité :

Tableau 02
name gender age0 age1 age2 age3 age4 age5 age6
Jackson Smith M NA 76.69 84.91 97.06 105.73 107.32 NA
Sophia Johnson F NA 76.05 NA NA NA NA NA
Emma Williams F 72.65 82.46 91.76 NA NA NA NA
Aiden Jones M 69.76 79.89 NA NA NA NA NA
Liam Brown M NA NA 85.34 93.22 105.78 105.84 114.82
Lucas Davis M 71.59 84.87 92.10 100.73 104.21 NA NA
Olivia Miller F 62.74 81.39 92.02 98.32 106.44 NA NA
Ava Wilson F NA NA 88.39 100.67 107.58 111.52 NA

Le nombre de NA a augmenté. ## Données au format large Mais que faire si vous voulez indiquer l’âge en mois ? Cela donnerait quelque chose comme ceci :

Tableau 03
name gender m4 m6 m7 m10 m12 ... m55 m60 m65 m72
Jackson Smith M NA NA NA NA 76.69 ... NA 107.32 NA NA
Sophia Johnson F NA NA NA NA 76.05 ... NA NA NA NA
Emma Williams F NA NA NA 72.65 NA ... NA NA NA NA
Aiden Jones M NA 69.76 NA NA NA ... NA NA NA NA
Liam Brown M NA NA NA NA NA ... NA 105.84 NA 114.82
Lucas Davis M NA NA 71.59 NA NA ... 104.21 NA NA NA
Olivia Miller F 62.74 NA NA NA NA ... NA NA NA NA
Ava Wilson F NA NA NA NA NA ... NA NA 111.52 NA

On trouve une multitude de NA dans ce tableau. Si les moments de mesure relatifs diffèrent d’un bébé à l’autre, le format large gaspille de la place. Une autre option est d’indiquer les âges des bébés pour l’année 2015, mais cela n’est possible que si les temps de mesure absolus sont identiques. Si les mesures sont décalées de quelques mois et que vous souhaitez l’âge en mois, cela ne fonctionne pas. Dans ce cas, l’exemple ci-dessus reste la seule voie. Vous pouvez alors envisager le format long. ## Données au format long Alors que, dans le format large, toutes les mesures d’un bébé figurent sur une seule ligne, en format long, chaque ligne ne contient qu’une seule mesure d’un bébé. La façon la plus simple : afficher le nom, le moment de mesure et la mesure (la taille) sur une seule ligne. C’est précisément ce que montre ce tableau :

Tableau 04
name gender month height
Olivia Miller F 4 62.74
Aiden Jones M 6 69.76
Lucas Davis M 7 71.59
Emma Williams F 10 72.65
Jackson Smith M 12 76.69
... ... ... ...
Liam Brown M 72 114.82

En ordonnant les données par nom, vous obtenez quelque chose comme le tableau ci-dessous. Évidemment, il occupe beaucoup moins d’espace que le tableau 3 plus haut !

Tableau 05
name gender month height
Jackson Smith M 12 76.69
Jackson Smith M 24 84.91
Jackson Smith M 36 97.06
Jackson Smith M 48 105.73
Jackson Smith M 60 107.32
Sophia Johnson F 12 76.05
Emma Williams F 10 72.65
... ... ... ...
Ava Wilson F 65 111.52

Format long vs format large

Rappel des différences fondamentales entre format large et format long : un point simple est que le format large regroupe de nombreuses mesures d’un individu sur une ligne, et les noms de colonnes décrivent ces mesures.

Ce tableau présente, sur une ligne, les tailles de Liam Brown de 2011 à 2015 :

Tableau 06
name gender year2011 year2012 year2013 year2014 year2015
Liam Brown M 88.24 96.91 101.85 108.13 112.45

En format long, les tailles de Liam Brown sont affichées dans une seule colonne :

Tableau 07
name gender _
Liam Brown M 85.34
Liam Brown M 93.22
Liam Brown M 105.78
Liam Brown M 105.84
Liam Brown M 114.82

Comme vous le voyez, on ne sait pas à quoi correspondent ces mesures. Si l’on ajoute le nom de colonne, on obtient ceci :

Tableau 08
name gender year2011, 2012, 2013, 2014, 2015
Liam Brown M 85.34
Liam Brown M 93.22
Liam Brown M 105.78
Liam Brown M 105.84
Liam Brown M 114.82

Mais cela pose un autre problème. La taille de Sophia Johnson n’a pas été mesurée entre 2011 et 2014. Comme vous pouvez le voir ci-dessous, il devient difficile de nommer correctement la colonne :

Tableau 09
name gender ?
Liam Brown M 85.34
Liam Brown M 93.22
Liam Brown M 105.78
Liam Brown M 105.84
Liam Brown M 114.82
Sophia Johnson F 76.05

Du format large au format long

Passer du format large au format long peut se concevoir étape par étape. Avant de rassembler les mesures de plusieurs colonnes en une seule, vous pouvez transformer le tableau pour qu’il ne contienne qu’une mesure par ligne. Faisons-le pour ce tableau :

Tableau 10
name gender age0 age1 age2 age3 age4 age5 age6
Emma Williams F 72.65 82.46 91.76 NA NA NA NA
Aiden Jones M 69.76 79.89 NA NA NA NA NA

Le résultat ressemble au tableau ci-dessous :

Tableau 11
name gender age0 age1 age2 age3 age4 age5 age6
Emma Williams F 72.65     NA NA NA NA
Emma Williams F   82.46         NA
Emma Williams F     91.76        
Aiden Jones M 69.76   NA NA NA NA NA
Aiden Jones M   79.89          

Avant de rassembler ces mesures éparses dans une seule colonne, ajoutez une colonne qui précise de quoi il s’agit, comme ci-dessous :

Tableau 12
name gender measure age0 age1 age2 age3 age4 age5 age6
Emma Williams F age0 72.65     NA NA NA NA
Emma Williams F age1   82.46         NA
Emma Williams F age2     91.76        
Aiden Jones M age0 69.76   NA NA NA NA NA
Aiden Jones M age1   79.89          

Le nom de cette colonne est souvent "measure" ou "key". Vous remarquez que "age0", "age1", "age2", "age3", "age4", "age5" apparaissent à la fois en noms de colonnes et dans une colonne. En omettant les noms de colonnes, on obtient :

Tableau 13
name gender measure _ __ ___ ____ _____ ______ _______
Emma Williams F age0 72.65     NA NA NA NA
Emma Williams F age1   82.46          
Emma Williams F age2     91.76        
Aiden Jones M age0 69.76   NA NA NA NA NA
Aiden Jones M age1   79.89          

Comme il n’y a qu’une mesure par ligne, vous pouvez les regrouper dans une seule colonne et obtenir :

Tableau 14
name gender measure  
Emma Williams F age0 72.65
Emma Williams F age1 82.46
Emma Williams F age2 91.76
Aiden Jones M age0 69.76
Aiden Jones M age1 79.89

Donnez maintenant un nom de colonne à l’ensemble des mesures, généralement "value" :

Tableau 15
name gender measure value
Emma Williams F age0 72.65
Emma Williams F age1 82.46
Emma Williams F age2 91.76
Aiden Jones M age0 69.76
Aiden Jones M age1 79.89

Observez le tableau ci-dessus : "age" se répète. On peut supprimer cette partie répétitive pour obtenir :

Tableau 16
name gender age value
Emma Williams F 0 72.65
Emma Williams F 1 82.46
Emma Williams F 2 91.76
Aiden Jones M 0 69.76
Aiden Jones M 1 79.89

Age, qui se répétait sur chaque ligne, devient un nom de colonne. Le nom value peut être plus explicite : remplacez-le par height, qui renseigne mieux. Résultat :

Tableau 17
name gender age height
Emma Williams F 0 72.65
Emma Williams F 1 82.46
Emma Williams F 2 91.76
Aiden Jones M 0 69.76
Aiden Jones M 1 79.89

Comparons les tableaux 15 et 17. value dans le tableau 15 pourrait désigner n’importe quoi, tandis que height dans le tableau 17 est précis : il s’agit uniquement de la taille. Une autre présentation possible :

Tableau 18
name gender measure value
Emma Williams F height.age0 72.65
Emma Williams F height.age1 82.46
Emma Williams F height.age2 91.76
Aiden Jones M height.age0 69.76
Aiden Jones M height.age1 79.89

Considérons des mesures diverses. Si vous avez taille, poids et IMC, vous obtiendrez le tableau ci-dessous. Ici, value mélange des grandeurs de natures et d’unités différentes, ce qui peut prêter à confusion. Dans ce tableau, la taille est en centimètres et le poids en kilogrammes :

Tableau 19
name gender measure value
Emma Williams F height 72.65
Emma Williams F weight 8.22
Emma Williams F BMI 22.60
Aiden Jones M height 69.76
Aiden Jones M weight 8.51

En passant du large au long, vous devez donc décider quelles valeurs seront rassemblées dans une même colonne, puis choisir le nom de cette colonne.

Récapitulons : pour convertir du large au long, identifiez les colonnes à combiner dans une seule. En procédant ainsi, plusieurs colonnes fusionnent en une colonne unique ; il faut donc lui donner un nom, comme illustré ci-dessous :

Tableau 20
id1 id2 age0 age1 age2
Emma Williams F NA 82.46 91.76
Aiden Jones M 69.76 79.89 NA
Emma Williams F NA 82.46 91.76
Tableau 21
id1 id2 age0 age1 age2
Emma Williams F NA    
Emma Williams F   82.46  
Emma Williams F     91.76
Aiden Jones M 69.76    
Aiden Jones M   79.89  
Aiden Jones M     NA
Emma Williams F NA    
Emma Williams F   82.46  
Emma Williams F     91.76
Tableau 22
id1 id2 age_ age0 age1 age2
Emma Williams F age0 NA    
Emma Williams F age1   82.46  
Emma Williams F age2     91.76
Aiden Jones M age0 69.76    
Aiden Jones M age1   79.89  
Aiden Jones M age2     NA
Emma Williams F age0 NA    
Emma Williams F age1   82.46  
Emma Williams F age2     91.76
Tableau 23
id1 id2 age_  
Emma Williams F age0 NA
Emma Williams F age1 82.46
Emma Williams F age2 91.76
Aiden Jones M age0 69.76
Aiden Jones M age1 79.89
Aiden Jones M age2 NA
Emma Williams F age0 NA
Emma Williams F age1 82.46
Emma Williams F age2 91.76
Tableau 24
id1 id2 key value
Emma Williams F age0 NA
Emma Williams F age1 82.46
Emma Williams F age2 91.76
Aiden Jones M age0 69.76
Aiden Jones M age1 79.89
Aiden Jones M age2 NA
Emma Williams F age0 NA
Emma Williams F age1 82.46
Emma Williams F age2 91.76
Tableau 25
id1 id2 key value
Emma Williams F age1 82.46
Emma Williams F age2 91.76
Aiden Jones M age0 69.76
Aiden Jones M age1 79.89
Emma Williams F age1 82.46
Emma Williams F age2 91.76

Regardons les colonnes id1 et id2 ci-dessus. id2 ne désigne pas un individu ; c’est un attribut (le genre) d’un individu, c’est-à-dire une mesure. Vous pouvez donc le convertir vers un format encore plus long. Le format « le plus long » tient en trois colonnes : id, key et value.

Tableau 26
id key value
Emma Williams gender F
Emma Williams age1 82.46
Emma Williams age2 91.76
Aiden Jones gender F
Aiden Jones age0 69.76
Aiden Jones age1 79.89
Emma Williams gender F
Emma Williams age1 82.46
Emma Williams age2 91.76

Ce tableau illustre le format « le plus long » à partir du tableau 25. Mais différentes personnes peuvent partager le même nom.

Dans ce cas, le format long peut prêter à confusion, car id ne permet pas d’identifier de manière univoque. Vous pourriez ajouter un suffixe numérique (par exemple via make.unique()), mais vous ne distinguez pas alors un nom déjà numéroté d’un nom réellement orthographié avec un point et un chiffre. Imaginez quelqu’un qui s’appelle réellement « John.2 » !

La solution évidente consiste à attribuer un identifiant numérique distinct à chaque personne. Les noms deviennent alors eux aussi des mesures.

Le tableau suivant montre que même les noms sont traités comme des mesures. En un sens, c’est le véritable « plus long » format.

Tableau 27
id key value
1 name Emma Williams
1 gender F
1 age1 82.46
1 age2 91.76
2 name Aiden Jones
2 gender F
2 age0 69.76
2 age1 79.89
3 name Emma Williams
3 gender F
3 age1 82.46
3 age2 91.76

Ce format « le plus long » est le plus simple pour revenir au format large. En inversant le processus montré des tableaux 20 à 25, vous revenez au large. Les tableaux suivants l’illustrent :

Tableau 28. Les mesures de la colonne key deviennent des noms de colonnes
id key name gender age0 age1 age2
1 name Emma Williams        
1 gender   F      
1 age1       82.46  
1 age2         91.76
2 name Aiden Jones        
2 gender   F      
2 age0     69.76    
2 age1       79.89  
3 name Emma Williams        
3 gender   F      
3 age1       82.46  
3 age2         91.76
Tableau 29. La colonne key peut être supprimée
id name gender age0 age1 age2
1 Emma Williams        
1   F      
1       82.46  
1         91.76
2 Aiden Jones        
2   F      
2     69.76    
2       79.89  
3 Emma Williams        
3   F      
3       82.46  
3         91.76
Tableau 30. Rassembler les lignes ayant le même id
id name gender age0 age1 age2
1 Emma Williams F   82.46 91.76
1          
1          
1          
2 Aiden Jones F 69.76 79.89  
2          
2          
2          
3 Emma Williams F   82.46 91.76
3          
3          
3          
Tableau 31. Supprimer toute ligne sans mesure
id name gender age0 age1 age2
1 Emma Williams F   82.46 91.76
2 Aiden Jones F 69.76 79.89  
3 Emma Williams F   82.46 91.76

L’élément clé, pour passer du large au long, est de décider quelles colonnes seront fusionnées dans une seule.

Mais il n’est pas obligatoire de n’utiliser qu’une seule colonne cible ; vous pouvez en utiliser deux si nécessaire, comme dans le tableau ci-dessous :

Tableau 32
name gender h2011 h2012 w2011 w2012
Jackson Smith M 74.69 84.99 9.60 12.0
Olivia Miller F NA 80.76 7.15 10.7
Ava Wilson F 88.77 96.45 NA 15.0

Savez-vous le convertir au format long ?

Les colonnes h2011, h2012, w2011, w2012 correspondent aux tailles et aux poids en 2011 et 2012. height et weight sont de natures différentes (cm, kg). Vous pouvez regrouper ces mesures dans une seule colonne ou en conserver deux distinctes, comme ici :

Tableau 33
name gender year height weight
Jackson Smith M 2011 74.69 9.60
Jackson Smith M 2012 84.99 12.00
Olivia Miller F 2011 NA 80.76
Olivia Miller F 2012 7.15 10.70
Ava Wilson F 2011 88.77 96.45
Ava Wilson F 2012 NA 15.00

S’agit-il d’un format long ou d’un format large ?

Passer du long au large dans R

Effectuons la conversion entre formats long et large avec R. De nombreuses fonctions et extensions existent pour cela.

Tableau 34
func package to_long_form to_wide_form
stack/unstack utils stack unstack
reshape stats reshape(direction="long", ...) reshape(direction="wide", ...)
melt/dcast reshape2 melt dcast
gather/spread tidyr gather spread

Ici, nous allons utiliser melt() et dcast() de l’extension reshape2. Pourquoi ? stack() et unstack() sont des fonctions de base qui nécessitent souvent un post-traitement. Notez que gather() et spread() de tidyr sont aussi très populaires, mais ne sont pas couverts ici.

Vous pouvez également utiliser reshape() du package stats. Attention à ne pas confondre avec le package reshape ! Ce dernier, tout comme reshape2, a été développé pour simplifier la vie de ceux qui peinaient avec reshape(). En outre, reshape() suppose souvent des données longitudinales (mesures répétées dans le temps).

Convertissons les données du tableau 35 en format long. Supposons que ce tableau est stocké dans un data.frame nommé dat.

Tableau 35
name gender year2011 year2012 year2013
Jackson Smith M 74.69 84.99 91.73
Emma Williams F NA NA 75.74
Liam Brown M 88.24 NA 101.85
Ava Wilson F 88.77 96.45 NA

babies = data.frame(name= c("Jackson Smith", "Emma Williams", "Liam Brown", "Ava Wilson"), gender = c("M", "F", "M", "F"), year2011= c(74.69, NA, 88.24, 88.77), year2012=c(84.99, NA, NA, 96.45), year2013=c(91.73, 75.74, 101.83, NA)) babies

##            name gender year2011 year2012 year2013
## 1 Jackson Smith      M    74.69    84.99    91.73
## 2 Emma Williams      F       NA       NA    75.74
## 3    Liam Brown      M    88.24       NA   101.83
## 4    Ava Wilson      F    88.77    96.45       NA

La question à se poser : "quelles colonnes regrouper en une seule ?".

Ce sont ici year2011, year2012, year2013. Avec melt(), listez-les dans measure.vars :

melt(babies, measure.vars = c("year2011", "year2012", "year2013"))

##             name gender variable  value
## 1  Jackson Smith      M year2011  74.69
## 2  Emma Williams      F year2011     NA
## 3     Liam Brown      M year2011  88.24
## 4     Ava Wilson      F year2011  88.77
## 5  Jackson Smith      M year2012  84.99
## 6  Emma Williams      F year2012     NA
## 7     Liam Brown      M year2012     NA
## 8     Ava Wilson      F year2012  96.45
## 9  Jackson Smith      M year2013  91.73
## 10 Emma Williams      F year2013  75.74
## 11    Liam Brown      M year2013 101.83
## 12    Ava Wilson      F year2013     NA

year2011, year2012, year2013 sont les colonnes placées en 3e, 4e, 5e position, vous pouvez donc utiliser :

melt(babies, measure.vars = 3:5)

##             name gender variable  value
## 1  Jackson Smith      M year2011  74.69
## 2  Emma Williams      F year2011     NA
## 3     Liam Brown      M year2011  88.24
## 4     Ava Wilson      F year2011  88.77
## 5  Jackson Smith      M year2012  84.99
## 6  Emma Williams      F year2012     NA
## 7     Liam Brown      M year2012     NA
## 8     Ava Wilson      F year2012  96.45
## 9  Jackson Smith      M year2013  91.73
## 10 Emma Williams      F year2013  75.74
## 11    Liam Brown      M year2013 101.83
## 12    Ava Wilson      F year2013     NA

Le résultat est dans le tableau ci-dessus. Notez les noms de colonnes variable et value. Les tableaux 23 et 24 montraient que de nouveaux noms de colonnes sont nécessaires. La fonction melt() utilise des noms par défaut - variable et value. Vous pouvez les remplacer en utilisant les arguments variable.name= et value.name=. Faisons-le ci-dessous :

melt(babies, measure.vars=3:5, variable.name="year", value.name="height")

##             name gender     year height
## 1  Jackson Smith      M year2011  74.69
## 2  Emma Williams      F year2011     NA
## 3     Liam Brown      M year2011  88.24
## 4     Ava Wilson      F year2011  88.77
## 5  Jackson Smith      M year2012  84.99
## 6  Emma Williams      F year2012     NA
## 7     Liam Brown      M year2012     NA
## 8     Ava Wilson      F year2012  96.45
## 9  Jackson Smith      M year2013  91.73
## 10 Emma Williams      F year2013  75.74
## 11    Liam Brown      M year2013 101.83
## 12    Ava Wilson      F year2013     NA

Les mesures ont été spécifiées dans les exemples ci-dessus. Pour les configurations que vous gérez, Id peut indirectement spécifier les mesures. Vous pouvez donc choisir des colonnes pour l'identifiant plutôt que pour les mesures.

Les résultats sont identiques pour les deux cas ci-dessous. Le premier choisit les colonnes pour l'identifiant, le second choisit les colonnes à regrouper :

melt(babies, id.vars=c("name","gender"))

melt(babies, measure.vars = c("year2011", "year2012", "year2013"))

##             name gender variable  value
## 1  Jackson Smith      M year2011  74.69
## 2  Emma Williams      F year2011     NA
## 3     Liam Brown      M year2011  88.24
## 4     Ava Wilson      F year2011  88.77
## 5  Jackson Smith      M year2012  84.99
## 6  Emma Williams      F year2012     NA
## 7     Liam Brown      M year2012     NA
## 8     Ava Wilson      F year2012  96.45
## 9  Jackson Smith      M year2013  91.73
## 10 Emma Williams      F year2013  75.74
## 11    Liam Brown      M year2013 101.83
## 12    Ava Wilson      F year2013     NA

Si vous spécifiez à la fois id.vars et measure.vars, les colonnes non incluses dans l'un ou l'autre sont exclues du résultat. Par exemple, regardez le bloc de code ci-dessous :

melt(babies, id.vars=c("name"), measure.vars=c("year2011", "year2012"))

##            name variable value
## 1 Jackson Smith year2011 74.69
## 2 Emma Williams year2011    NA
## 3    Liam Brown year2011 88.24
## 4    Ava Wilson year2011 88.77
## 5 Jackson Smith year2012 84.99
## 6 Emma Williams year2012    NA
## 7    Liam Brown year2012    NA
## 8    Ava Wilson year2012 96.45

De plus, na.rm=T peut éliminer les NA :

melt(babies, id.vars=c("name"), measure.vars=c("year2011", "year2012"), na.rm=T)

##            name variable value
## 1 Jackson Smith year2011 74.69
## 3    Liam Brown year2011 88.24
## 4    Ava Wilson year2011 88.77
## 5 Jackson Smith year2012 84.99
## 8    Ava Wilson year2012 96.45

La fonction dcast() fait l'inverse de melt(). id, variable et value sont les colonnes du format le plus long. dcast(data, id ~ variable, value.var="value") transforme le format le plus long en format large.

babiesLong <- melt(babies, id.vars=c("name"), measure.vars=c("year2011", "year2012"), na.rm=T)
babiesLong

##            name variable value
## 1 Jackson Smith year2011 74.69
## 3    Liam Brown year2011 88.24
## 4    Ava Wilson year2011 88.77
## 5 Jackson Smith year2012 84.99
## 8    Ava Wilson year2012 96.45

babiesLong a name pour id, variable pour variable, et value pour value. Vous pouvez donc utiliser dcast() pour le transformer en format long :

dcast(babiesLong, name ~ variable, value.var="value")

##            name year2011 year2012
## 1    Ava Wilson    88.77    96.45
## 2 Jackson Smith    74.69    84.99
## 3    Liam Brown    88.24       NA

Conclusion

C'est à peu près tout. Dans ce tutoriel, vous vous êtes concentré sur la compréhension de la logique et du processus de remodelage des données. Habituellement, le format long est préféré pour l'analyse, mais il existe des exceptions. La présentation des données au format large peut économiser de l'espace lorsque cela est approprié, mais à mesure que le nombre de valeurs manquantes augmente, il vaut mieux convertir au format long.

Pour la conversion de format, vous devez vous concentrer sur ce que sont les mesures. La devise du format long est une mesure par ligne, et le format large a plusieurs mesures par ligne. Lorsque vous regroupez des mesures dans une seule colonne, les noms de colonnes d'origine doivent être préservés dans une colonne supplémentaire. Lorsque vous étalez des mesures d'une colonne sur plusieurs colonnes, vous devez déterminer quels doivent être les noms de colonnes à partir de la colonne variable.

Une fois que vous avez compris le processus, l'utilisation de fonctions telles que dcast() et melt() devient beaucoup plus facile !

Sujets
R
Science des données

Cours pertinents

Cours

Introduction à R

4 h
3.1M
Maîtrisez les bases de l’analyse de données en R et pratiquez les vecteurs, listes et data frames avec des données réelles.
Afficher les détailsRight Arrow
Commencer Le Cours
Voir plusRight Arrow