Split-Apply-Combine
Een veelvoorkomend data science-probleem is je data frame opsplitsen op basis van een groepering, een bewerking toepassen op elke groep en die stukken daarna weer combineren tot één data frame. Deze klasse van problemen is in R zo gebruikelijk dat hij de naam split-apply-combine heeft gekregen. In Intermediate R for Finance ga je verschillende van deze problemen en handige functies verkennen, maar laten we nu een simpel voorbeeld doen.
Stel dat je in het cash-data frame de cash_flow voor bedrijf A wilt verdubbelen en voor bedrijf B wilt verdrievoudigen:
grouping <- cash$company
split_cash <- split(cash, grouping)
# We kunnen per lijstelement de kolom cash_flow benaderen met:
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)
Kijk nog eens goed hoe je de kolom cash_flow benadert. De eerste $ gebruik je om het element A van de lijst split_cash te pakken. De tweede $ gebruik je om de kolom cash_flow van het data frame in A te pakken.
Deze oefening maakt deel uit van de cursus
Introductie tot R voor Financiën
Oefeninstructies
- Het data frame
split_cashis voor je beschikbaar. Ook degroupingdie is gebruikt omcashte splitsen is beschikbaar. - Print
split_cashom de lijst te bekijken. - Print de kolom
cash_flowvoor bedrijfBinsplit_cash. - Helaas heb je gehoord dat bedrijf A failliet is. Zet de
cash_flowvoor bedrijf A op0. - Gebruik
groupingom het data framesplit_cashteunsplit(). Ken dit toe aancash_no_A. - Print tot slot
cash_no_Aom het aangepaste data frame te bekijken.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
# 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