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()!
· 15 min lire

Explorez l'IA

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
namegenderyear2011year2012year2013year2014year2015
Jackson SmithM74.6984.9991.73105.11111.04
Sophia JohnsonFNANANANA75.89
Emma WilliamsFNANA75.7486.5091.50
Aiden JonesMNANANA71.8981.42
Liam BrownM88.2496.91101.85108.13112.45
Lucas DavisM70.6083.7894.17100.03106.35
Olivia MillerF64.7880.7687.3097.13103.80
Ava WilsonF88.7796.45104.72112.84NA

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
namegenderage0age1age2age3age4age5age6
Jackson SmithMNA76.6984.9197.06105.73107.32NA
Sophia JohnsonFNA76.05NANANANANA
Emma WilliamsF72.6582.4691.76NANANANA
Aiden JonesM69.7679.89NANANANANA
Liam BrownMNANA85.3493.22105.78105.84114.82
Lucas DavisM71.5984.8792.10100.73104.21NANA
Olivia MillerF62.7481.3992.0298.32106.44NANA
Ava WilsonFNANA88.39100.67107.58111.52NA

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
namegenderm4m6m7m10m12...m55m60m65m72
Jackson SmithMNANANANA76.69...NA107.32NANA
Sophia JohnsonFNANANANA76.05...NANANANA
Emma WilliamsFNANANA72.65NA...NANANANA
Aiden JonesMNA69.76NANANA...NANANANA
Liam BrownMNANANANANA...NA105.84NA114.82
Lucas DavisMNANA71.59NANA...104.21NANANA
Olivia MillerF62.74NANANANA...NANANANA
Ava WilsonFNANANANANA...NANA111.52NA

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
namegendermonthheight
Olivia MillerF462.74
Aiden JonesM669.76
Lucas DavisM771.59
Emma WilliamsF1072.65
Jackson SmithM1276.69
............
Liam BrownM72114.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
namegendermonthheight
Jackson SmithM1276.69
Jackson SmithM2484.91
Jackson SmithM3697.06
Jackson SmithM48105.73
Jackson SmithM60107.32
Sophia JohnsonF1276.05
Emma WilliamsF1072.65
............
Ava WilsonF65111.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
namegenderyear2011year2012year2013year2014year2015
Liam BrownM88.2496.91101.85108.13112.45

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

Tableau 07
namegender_
Liam BrownM85.34
Liam BrownM93.22
Liam BrownM105.78
Liam BrownM105.84
Liam BrownM114.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
namegenderyear2011, 2012, 2013, 2014, 2015
Liam BrownM85.34
Liam BrownM93.22
Liam BrownM105.78
Liam BrownM105.84
Liam BrownM114.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
namegender?
Liam BrownM85.34
Liam BrownM93.22
Liam BrownM105.78
Liam BrownM105.84
Liam BrownM114.82
Sophia JohnsonF76.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
namegenderage0age1age2age3age4age5age6
Emma WilliamsF72.6582.4691.76NANANANA
Aiden JonesM69.7679.89NANANANANA

Le résultat ressemble au tableau ci-dessous :

Tableau 11
namegenderage0age1age2age3age4age5age6
Emma WilliamsF72.65  NANANANA
Emma WilliamsF 82.46    NA
Emma WilliamsF  91.76    
Aiden JonesM69.76 NANANANANA
Aiden JonesM 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
namegendermeasureage0age1age2age3age4age5age6
Emma WilliamsFage072.65  NANANANA
Emma WilliamsFage1 82.46    NA
Emma WilliamsFage2  91.76    
Aiden JonesMage069.76 NANANANANA
Aiden JonesMage1 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
namegendermeasure____________________________
Emma WilliamsFage072.65  NANANANA
Emma WilliamsFage1 82.46     
Emma WilliamsFage2  91.76    
Aiden JonesMage069.76 NANANANANA
Aiden JonesMage1 79.89     

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

Tableau 14
namegendermeasure 
Emma WilliamsFage072.65
Emma WilliamsFage182.46
Emma WilliamsFage291.76
Aiden JonesMage069.76
Aiden JonesMage179.89

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

Tableau 15
namegendermeasurevalue
Emma WilliamsFage072.65
Emma WilliamsFage182.46
Emma WilliamsFage291.76
Aiden JonesMage069.76
Aiden JonesMage179.89

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

Tableau 16
namegenderagevalue
Emma WilliamsF072.65
Emma WilliamsF182.46
Emma WilliamsF291.76
Aiden JonesM069.76
Aiden JonesM179.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
namegenderageheight
Emma WilliamsF072.65
Emma WilliamsF182.46
Emma WilliamsF291.76
Aiden JonesM069.76
Aiden JonesM179.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
namegendermeasurevalue
Emma WilliamsFheight.age072.65
Emma WilliamsFheight.age182.46
Emma WilliamsFheight.age291.76
Aiden JonesMheight.age069.76
Aiden JonesMheight.age179.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
namegendermeasurevalue
Emma WilliamsFheight72.65
Emma WilliamsFweight8.22
Emma WilliamsFBMI22.60
Aiden JonesMheight69.76
Aiden JonesMweight8.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
id1id2age0age1age2
Emma WilliamsFNA82.4691.76
Aiden JonesM69.7679.89NA
Emma WilliamsFNA82.4691.76
Tableau 21
id1id2age0age1age2
Emma WilliamsFNA  
Emma WilliamsF 82.46 
Emma WilliamsF  91.76
Aiden JonesM69.76  
Aiden JonesM 79.89 
Aiden JonesM  NA
Emma WilliamsFNA  
Emma WilliamsF 82.46 
Emma WilliamsF  91.76
Tableau 22
id1id2age_age0age1age2
Emma WilliamsFage0NA  
Emma WilliamsFage1 82.46 
Emma WilliamsFage2  91.76
Aiden JonesMage069.76  
Aiden JonesMage1 79.89 
Aiden JonesMage2  NA
Emma WilliamsFage0NA  
Emma WilliamsFage1 82.46 
Emma WilliamsFage2  91.76
Tableau 23
id1id2age_ 
Emma WilliamsFage0NA
Emma WilliamsFage182.46
Emma WilliamsFage291.76
Aiden JonesMage069.76
Aiden JonesMage179.89
Aiden JonesMage2NA
Emma WilliamsFage0NA
Emma WilliamsFage182.46
Emma WilliamsFage291.76
Tableau 24
id1id2keyvalue
Emma WilliamsFage0NA
Emma WilliamsFage182.46
Emma WilliamsFage291.76
Aiden JonesMage069.76
Aiden JonesMage179.89
Aiden JonesMage2NA
Emma WilliamsFage0NA
Emma WilliamsFage182.46
Emma WilliamsFage291.76
Tableau 25
id1id2keyvalue
Emma WilliamsFage182.46
Emma WilliamsFage291.76
Aiden JonesMage069.76
Aiden JonesMage179.89
Emma WilliamsFage182.46
Emma WilliamsFage291.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
idkeyvalue
Emma WilliamsgenderF
Emma Williamsage182.46
Emma Williamsage291.76
Aiden JonesgenderF
Aiden Jonesage069.76
Aiden Jonesage179.89
Emma WilliamsgenderF
Emma Williamsage182.46
Emma Williamsage291.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
idkeyvalue
1nameEmma Williams
1genderF
1age182.46
1age291.76
2nameAiden Jones
2genderF
2age069.76
2age179.89
3nameEmma Williams
3genderF
3age182.46
3age291.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
idkeynamegenderage0age1age2
1nameEmma Williams    
1gender F   
1age1   82.46 
1age2    91.76
2nameAiden Jones    
2gender F   
2age0  69.76  
2age1   79.89 
3nameEmma Williams    
3gender F   
3age1   82.46 
3age2    91.76
Tableau 29. La colonne key peut être supprimée
idnamegenderage0age1age2
1Emma Williams    
1 F   
1   82.46 
1    91.76
2Aiden Jones    
2 F   
2  69.76  
2   79.89 
3Emma Williams    
3 F   
3   82.46 
3    91.76
Tableau 30. Rassembler les lignes ayant le même id
idnamegenderage0age1age2
1Emma WilliamsF 82.4691.76
1     
1     
1     
2Aiden JonesF69.7679.89 
2     
2     
2     
3Emma WilliamsF 82.4691.76
3     
3     
3     
Tableau 31. Supprimer toute ligne sans mesure
idnamegenderage0age1age2
1Emma WilliamsF 82.4691.76
2Aiden JonesF69.7679.89 
3Emma WilliamsF 82.4691.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
namegenderh2011h2012w2011w2012
Jackson SmithM74.6984.999.6012.0
Olivia MillerFNA80.767.1510.7
Ava WilsonF88.7796.45NA15.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
namegenderyearheightweight
Jackson SmithM201174.699.60
Jackson SmithM201284.9912.00
Olivia MillerF2011NA80.76
Olivia MillerF20127.1510.70
Ava WilsonF201188.7796.45
Ava WilsonF2012NA15.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
funcpackageto_long_formto_wide_form
stack/unstackutilsstackunstack
reshapestatsreshape(direction="long", ...)reshape(direction="wide", ...)
melt/dcastreshape2meltdcast
gather/spreadtidyrgatherspread

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
namegenderyear2011year2012year2013
Jackson SmithM74.6984.9991.73
Emma WilliamsFNANA75.74
Liam BrownM88.24NA101.85
Ava WilsonF88.7796.45NA

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

Contenus associés

blog

2022-2023 Rapport annuel DataCamp Classrooms

Tutoriel

Régression MCO : Les idées clés expliquées