CommencezCommencez gratuitement

Diviser-Appliquer-Combiner

Un problème courant en science des données consiste à diviser votre tableau de données selon un regroupement, à appliquer une transformation à chaque groupe, puis à recombiner le tout en un seul tableau de données. Cette classe de problèmes est si fréquente en R qu'on l'appelle le paradigme split-apply-combine. Dans Intermediate R for Finance, vous verrez plusieurs de ces problèmes ainsi que des fonctions utiles pour les résoudre, mais, pour l'instant, faisons un exemple simple.

Supposons que, pour le tableau cash, vous souhaitiez doubler la colonne cash_flow pour l'entreprise A et la tripler pour l'entreprise B :

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

# On peut accéder à la colonne cash_flow de chaque élément de la liste par :
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 encore comment vous accédez à la colonne cash_flow. Le premier $ sert à accéder à l'élément A de la liste split_cash. Le second $ sert à accéder à la colonne cash_flow du tableau de données contenu dans A.

Cette activité fait partie du cours

Introduction à R pour la finance

Voir le cours

Instructions de l’exercice

  • Le tableau de données split_cash est à votre disposition. Le grouping utilisé pour diviser cash est aussi disponible.
  • Affichez split_cash pour examiner la liste.
  • Affichez la colonne cash_flow de l'entreprise B dans split_cash.
  • Hélas, vous avez appris que l'entreprise A a fermé ses portes. Mettez la colonne cash_flow de l'entreprise A à 0.
  • Utilisez grouping avec unsplit() pour recombiner le tableau de données split_cash. Assignez le résultat à cash_no_A.
  • Enfin, affichez cash_no_A pour voir le tableau de données modifié.

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

# 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