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
Instructions de l’exercice
- Le tableau de données
split_cashest à votre disposition. Legroupingutilisé pour divisercashest aussi disponible. - Affichez
split_cashpour examiner la liste. - Affichez la colonne
cash_flowde l'entrepriseBdanssplit_cash. - Hélas, vous avez appris que l'entreprise A a fermé ses portes. Mettez la colonne
cash_flowde l'entreprise A à0. - Utilisez
groupingavecunsplit()pour recombiner le tableau de donnéessplit_cash. Assignez le résultat àcash_no_A. - Enfin, affichez
cash_no_Apour 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