Aan de slagGa gratis aan de slag

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

Cursus bekijken

Oefeninstructies

  • Het data frame split_cash is voor je beschikbaar. Ook de grouping die is gebruikt om cash te splitsen is beschikbaar.
  • Print split_cash om de lijst te bekijken.
  • Print de kolom cash_flow voor bedrijf B in split_cash.
  • Helaas heb je gehoord dat bedrijf A failliet is. Zet de cash_flow voor bedrijf A op 0.
  • Gebruik grouping om het data frame split_cash te unsplit(). Ken dit toe aan cash_no_A.
  • Print tot slot cash_no_A om 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
Code bewerken en uitvoeren