LoslegenKostenlos loslegen

Split-Apply-Combine

Ein häufiges Problem in der Data Science ist es, einen Data Frame nach einer Gruppierung zu teilen, auf jede Gruppe eine Transformation anzuwenden und die Teile anschließend wieder zu einem Data Frame zusammenzuführen. Diese Problemklasse ist in R so verbreitet, dass sie den Namen split-apply-combine bekommen hat. In Intermediate R for Finance lernst du mehrere dieser Probleme und passende Funktionen kennen. Für jetzt machen wir ein einfaches Beispiel.

Angenommen, du möchtest im cash-Data-Frame den cash_flow für Unternehmen A verdoppeln und für Unternehmen B verdreifachen:

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

# Wir können die cash_flow-Spalte jedes Listenelements so ansprechen:
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)

Schau dir noch einmal an, wie du auf die Spalte cash_flow zugreifst. Das erste $ greift auf das Element A der Liste split_cash zu. Das zweite $ greift auf die Spalte cash_flow des Data Frames in A zu.

Diese Übung ist Teil des Kurses

Einführung in R für Finance

Kurs anzeigen

Anleitung zur Übung

  • Der Data Frame split_cash steht dir zur Verfügung. Außerdem ist das grouping, mit dem cash gesplittet wurde, verfügbar.
  • Gib split_cash aus, um dir die Liste anzusehen.
  • Gib die Spalte cash_flow für Unternehmen B in split_cash aus.
  • Leider hast du erfahren, dass Unternehmen A insolvent ist. Setze den cash_flow für Unternehmen A auf 0.
  • Verwende grouping, um den Data Frame split_cash mit unsplit() wieder zusammenzusetzen. Weise das Ergebnis cash_no_A zu.
  • Gib zum Schluss cash_no_A aus, um den veränderten Data Frame zu sehen.

Interaktive Übung

Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.

# 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 bearbeiten und ausführen