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
Instrucțiuni pentru exercițiu
- Data frame-ul
split_casheste disponibil. De asemenea,grouping-ul folosit pentru a împărțicasheste disponibil. - Afișează
split_cashpentru a vedea cum arată lista. - Afișează coloana
cash_flowpentru companiaBdinsplit_cash. - Din păcate, ai aflat că compania A a dat faliment. Setează
cash_flowpentru compania A la0. - Folosește
groupingpentru a apelaunsplit()pesplit_cash. Atribuie rezultatul variabileicash_no_A. - În final, afișează
cash_no_Apentru 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