ÎncepețiÎncepe gratuit

Split-Apply-Combine

O problemă frecventă în știința datelor constă în a împărți un data frame după un criteriu de grupare, a aplica o transformare fiecărui grup și a reuni apoi toate piesele într-un singur data frame. Această categorie de probleme este atât de comună în R încât a primit un nume propriu: split-apply-combine. În R Intermediar pentru Finanțe vei explora mai multe astfel de probleme și funcții utile pentru rezolvarea lor, dar, deocamdată, să parcurgem un exemplu simplu.

Presupune că, pentru data frame-ul cash, vrei să dublezi cash_flow pentru compania A și să-l triplezi pentru compania B:

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

# We can access each list element's cash_flow column by:
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)

Observă din nou cum accesezi coloana cash_flow. Primul $ accesează elementul A din lista split_cash. Al doilea $ accesează coloana cash_flow din data frame-ul aflat în A.

Acest exercițiu face parte din cursul

Introducere în R pentru Finanțe

Vezi cursul

Instrucțiuni pentru exercițiu

  • Data frame-ul split_cash este disponibil. De asemenea, grouping-ul folosit pentru a împărți cash este disponibil.
  • Afișează split_cash pentru a vedea cum arată lista.
  • Afișează coloana cash_flow pentru compania B din split_cash.
  • Din păcate, ai aflat că compania A a dat faliment. Setează cash_flow pentru compania A la 0.
  • Folosește grouping pentru a apela unsplit() pe split_cash. Atribuie rezultatul variabilei cash_no_A.
  • În final, afișează cash_no_A pentru a vedea data frame-ul modificat.

Exercițiu interactiv practic

Încearcă acest exercițiu completând acest cod de exemplu.

# 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
Editează și rulează codul