IniziaInizia gratis

Split-Apply-Combine

Un problema tipico in data science è suddividere un data frame in base a un raggruppamento, applicare una trasformazione a ciascun gruppo e poi ricombinare il tutto in un unico data frame. In R questa classe di problemi è così comune che ha un nome specifico: split-apply-combine. In Intermediate R for Finance esplorerai diversi di questi problemi e le funzioni utili per risolverli; per ora, vediamo un esempio semplice.

Supponi che, per il data frame cash, tu voglia raddoppiare il cash_flow dell’azienda A e triplicarlo per l’azienda B:

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

# Possiamo accedere alla colonna cash_flow di ciascun elemento della lista così:
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)

Osserva di nuovo come si accede alla colonna cash_flow. Il primo $ serve per accedere all’elemento A della lista split_cash. Il secondo $ serve per accedere alla colonna cash_flow del data frame in A.

Questo esercizio fa parte del corso

Introduzione a R per la finanza

Visualizza il corso

Istruzioni dell'esercizio

  • Il data frame split_cash è a tua disposizione. È disponibile anche il grouping usato per dividere cash.
  • Stampa split_cash per dare un’occhiata alla lista.
  • Stampa la colonna cash_flow per l’azienda B in split_cash.
  • Purtroppo, hai scoperto che l’azienda A ha chiuso. Imposta il cash_flow dell’azienda A a 0.
  • Usa grouping per eseguire unsplit() sul data frame split_cash. Assegna il risultato a cash_no_A.
  • Infine, stampa cash_no_A per vedere il data frame modificato.

Esercizio pratico interattivo

Prova a risolvere questo esercizio completando il codice di esempio.

# 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
Modifica ed esegui il codice