La función apply() en R aplica una función a un dataframe, matriz, lista o vector, eligiendo si se va a aplicar a las filas o a las columnas. El resultado de esta función depende del tipo de objeto (lista, vector, etc…) que se utiliza (x).
apply(x, MARGIN, FUN)
# x : matriz, dataframe, lista o vector.
# MARGIN: 1 para operar sobre las filas y 2 para operar sobre las columnas.
# FUN: Función que se aplica sobre filas o columnas.
Ejemplo: Imaginemos que tenemos 6 niños, que asisten a 2 colegios diferentes, y contamos con los días asistidos y los días totales. Y queremos calcular los días promedio asistidos y totales por todos los niños.
df = data.frame("NOMBRES" = c("Ana","Javiera","José","Juan","Miguel", "María"),
"LUGAR_ASISTIR" = c("Lugar1", "Lugar2", "Lugar1", "Lugar2", "Lugar1", "Lugar1"),
"DIAS_ASISTIDOS" = c(8,7,10,5,6,10),
"DIAS_TOTALES" = c(10,10,10,10,10,10))
df
## NOMBRES LUGAR_ASISTIR DIAS_ASISTIDOS DIAS_TOTALES
## 1 Ana Lugar1 8 10
## 2 Javiera Lugar2 7 10
## 3 José Lugar1 10 10
## 4 Juan Lugar2 5 10
## 5 Miguel Lugar1 6 10
## 6 María Lugar1 10 10
Entonces ejecutamos la consulta:
apply(df[,c(3,4)], 2, mean)
## DIAS_ASISTIDOS DIAS_TOTALES
## 7.666667 10.000000
La función lapply() en R está hecha para realizarle operaciones a una lista, pero igual admite otro tipo de objeto. La diferencia con la función apply() es que la función devuelve una lista.
lapply(x, FUN)
# x : matriz, dataframe, lista o vector.
# FUN: Función que se aplica sobre filas o columnas.
Ejemplo: Queremos calcular los días promedio asistidos y totales por todos los niños.
df
## NOMBRES LUGAR_ASISTIR DIAS_ASISTIDOS DIAS_TOTALES
## 1 Ana Lugar1 8 10
## 2 Javiera Lugar2 7 10
## 3 José Lugar1 10 10
## 4 Juan Lugar2 5 10
## 5 Miguel Lugar1 6 10
## 6 María Lugar1 10 10
Entonces ejecutamos la consulta:
lapply(df[,c(3,4)], mean)
## $DIAS_ASISTIDOS
## [1] 7.666667
##
## $DIAS_TOTALES
## [1] 10
Podemos ver que obtenermos el mismo resultado anterior pero en una lista.
La función sapply() en R está hecha para realizarle operaciones a una lista, pero igual admite otro tipo de objeto La diferencia con la función apply() es que la función devuelve un vector.
sapply(x, FUN)
# x : matriz, dataframe, lista o vector.
# FUN: Función que se aplica sobre filas o columnas.
Ejemplo: Queremos calcular los días promedio asistidos y totales por todos los niños.
df
## NOMBRES LUGAR_ASISTIR DIAS_ASISTIDOS DIAS_TOTALES
## 1 Ana Lugar1 8 10
## 2 Javiera Lugar2 7 10
## 3 José Lugar1 10 10
## 4 Juan Lugar2 5 10
## 5 Miguel Lugar1 6 10
## 6 María Lugar1 10 10
Entonces ejecutamos la consulta:
sapply(df[,c(3,4)], mean)
## DIAS_ASISTIDOS DIAS_TOTALES
## 7.666667 10.000000
Podemos ver que el resultado de la función es un vector.
La función tapply() en R, le aplica una función a los datos agrupados.
tapply(x, INDEX, FUN)
# x : matriz, dataframe, lista o vector.
# INDEX: lista de categorías a agrupar.
# FUN: Función que se aplica sobre filas o columnas.
Ejemplo: Si queremos saber cuales son los días de asistencia promedio por lugar_asistir.
df
## NOMBRES LUGAR_ASISTIR DIAS_ASISTIDOS DIAS_TOTALES
## 1 Ana Lugar1 8 10
## 2 Javiera Lugar2 7 10
## 3 José Lugar1 10 10
## 4 Juan Lugar2 5 10
## 5 Miguel Lugar1 6 10
## 6 María Lugar1 10 10
Entonces ejecutamos la consulta:
tapply(df$DIAS_ASISTIDOS,df$LUGAR_ASISTIR, mean)
## Lugar1 Lugar2
## 8.5 6.0
La función mapply() en R, realiza operaciones entre matrices y devuelve una lista o vector.
mapply(FUN, arg1, arg2)
# FUN: Función que se aplica sobre filas o columnas.
#arg1, arg2: matrices que se va a operar.
Ejemplo: Ahora queremos la proporción de dias_asistidos sobre dias_totales por niño.
df
## NOMBRES LUGAR_ASISTIR DIAS_ASISTIDOS DIAS_TOTALES
## 1 Ana Lugar1 8 10
## 2 Javiera Lugar2 7 10
## 3 José Lugar1 10 10
## 4 Juan Lugar2 5 10
## 5 Miguel Lugar1 6 10
## 6 María Lugar1 10 10
Entonces ejecutamos la consulta:
f <- function(a,b) a/b
mapply(f,df$DIAS_ASISTIDOS, df$DIAS_TOTALES)
## [1] 0.8 0.7 1.0 0.5 0.6 1.0