ComenzarEmpieza gratis

Split-Apply-Combine

Un problema habitual en ciencia de datos es dividir un data frame por un agrupamiento, aplicar alguna transformación a cada grupo y después volver a combinar esas piezas en un único data frame. Esta clase de problemas es tan común en R que recibe el nombre de split-apply-combine. En Intermediate R for Finance explorarás varios de estos problemas y funciones útiles para resolverlos, pero, por ahora, hagamos un ejemplo sencillo.

Supón que, para el data frame cash, te interesa duplicar el cash_flow de la empresa A y triplicarlo para la empresa B:

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

# Podemos acceder a la columna cash_flow de cada elemento de la lista así:
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)

Fíjate de nuevo en cómo accedes a la columna cash_flow. El primer $ sirve para acceder al elemento A de la lista split_cash. El segundo $ sirve para acceder a la columna cash_flow del data frame en A.

Este ejercicio forma parte del curso

Introducción a R para finanzas

Ver curso

Instrucciones del ejercicio

  • Tienes disponible el data frame split_cash. También está disponible el grouping que se usó para dividir cash.
  • Imprime split_cash para echar un vistazo a la lista.
  • Imprime la columna cash_flow de la empresa B en split_cash.
  • Por desgracia, has sabido que la empresa A ha quebrado. Establece el cash_flow de la empresa A en 0.
  • Usa grouping para hacer unsplit() del data frame split_cash. Asigna el resultado a cash_no_A.
  • Por último, imprime cash_no_A para ver el data frame modificado.

Ejercicio interactivo práctico

Prueba este ejercicio y completa el código de muestra.

# 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
Editar y ejecutar código