Aan de slagBegin gratis

Split-Apply-Combine

Een veelvoorkomend probleem in data science is je data frame opsplitsen op basis van een groepering, per groep een bewerking toepassen en die stukken vervolgens weer samenvoegen tot één data frame. Dit soort problemen komt zo vaak voor in R dat het de naam split-apply-combine heeft gekregen. In Intermediate R for Finance ga je verschillende van dit soort problemen en handige functies verkennen, maar voor nu doen we een simpel voorbeeld.

Stel dat je voor 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 de cash_flow-kolom van elk lijstelement als volgt benaderen:
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 hoe je de kolom cash_flow benadert. De eerste $ is om het element A van de split_cash-lijst te openen. De tweede $ is om de cash_flow-kolom van het data frame in A te openen.

Deze oefening maakt deel uit van de cursus

Introductie tot R voor finance

Bekijk cursus

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 gegaan. 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 zien.

Interactieve oefening met praktijkervaring

Probeer deze oefening door deze voorbeeldcode aan 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