CommencerCommencer gratuitement

Diviser-Appliquer-Combiner

Un problème courant en data science consiste à diviser un data frame selon un regroupement, appliquer une transformation à chaque groupe, puis recombiner le tout en un seul data frame. Cette famille de problèmes est si fréquente en R qu’elle a été baptisée split-apply-combine. Dans Intermediate R for Finance, vous explorerez plusieurs de ces problèmes et des fonctions utiles pour les résoudre, mais pour l’instant, voyons un exemple simple.

Supposons que, pour le data frame cash, vous vouliez doubler cash_flow pour l’entreprise A et le tripler pour l’entreprise B :

grouping <- cash$company
split_cash <- split(cash, grouping)

# Nous pouvons accéder à la colonne cash_flow de chaque élément de la liste via&nbsp;:
split_cash$A$cash_flow
[1] 1000 4000  550

split_cash$A$cash_flow <- split_cash$A$cash_flow * 2
split_cash$B$cash_flow <- split_cash$B$cash_flow * 3

new_cash <- unsplit(split_cash, grouping)

Regardez à nouveau comment vous accédez à la colonne cash_flow. Le premier $ permet d’accéder à l’élément A de la liste split_cash. Le deuxième $ permet d’accéder à la colonne cash_flow du data frame contenu dans A.

Cet exercice fait partie du cours

Introduction à R pour la finance

Afficher le cours

Instructions

  • Le data frame split_cash est à votre disposition. Le grouping utilisé pour scinder cash est aussi disponible.
  • Affichez split_cash pour examiner la liste.
  • Affichez la colonne cash_flow de l’entreprise B dans split_cash.
  • Mauvaise nouvelle : vous avez appris que l’entreprise A a fait faillite. Fixez cash_flow de l’entreprise A à 0.
  • Utilisez grouping avec unsplit() pour recomposer le data frame split_cash. Assignez le résultat à cash_no_A.
  • Enfin, affichez cash_no_A pour voir le data frame modifié.

Exercice interactif pratique

Essayez cet exercice en complétant cet exemple de code.

# Print split_cash


# Print the cash_flow column of B in split_cash
split_cash$___$___

# Set the cash_flow column of company A in split_cash to 0
split_cash$___$___ <- ___

# Use the grouping to unsplit split_cash
cash_no_A <- unsplit(___, ___)

# Print cash_no_A
Modifier et exécuter le code