14/11/2021

LAS FUNCIONES SAPPLY() Y LAPPLY()

Supongamos que ya tenemos una data frame con columnas unicamente con variables cuantitativas y queremos obtener el promedio de cada columna de nuestra data independientemente. En este caso podremos usa la función sapply() que permite aplicar una función (la media en este caso) a cada uno de los elementos del data frame, la cual se presenta a continuación:

##     primera   segunda   tercera
## 1 0.5761760  9.122870 153.20849
## 2 0.3223968  3.337316 175.20408
## 3 0.1315071 17.639253 128.87671
## 4 0.9409788 11.073020 130.32742
## 5 0.8830509 13.724038  93.81992
##    primera    segunda    tercera 
##   0.570822  10.979300 136.287325

La función lapply() es más o menos similar, pero los resultados siempre se muestra en lista.

##     primera   segunda   tercera
## 1 0.5761760  9.122870 153.20849
## 2 0.3223968  3.337316 175.20408
## 3 0.1315071 17.639253 128.87671
## 4 0.9409788 11.073020 130.32742
## 5 0.8830509 13.724038  93.81992
## $primera
## [1] 0.570822
## 
## $segunda
## [1] 10.9793
## 
## $tercera
## [1] 136.2873

OPERACIONES MARGINALES EN MATRICES CON LA FUNCION APPLY()

Permite aplicar una función a través de una matriz, array o data frame. Puedes hacer esto de varias maneras, dependiendo de cómo configures el argumento margin que habitualmente puede tomar valores 1, 2 o c(1,2). En este caso realizamos la suma por columnas de nuestra matriz.

##      [,1] [,2] [,3]
## [1,]    2    4    5
## [2,]    6    7    2
## [3,]    4    6    7
## [4,]    8    4    3
## [1] 20 21 17

OBSERVACION el argumento de margin es 1:la función se aplicará a cada fila y 2: la función se aplicará a cada columna.

CLASIFICACION Y USO DE LA FUNCION SPLIT()

Aunque la mayoria de los datos estan presentados en tablas no estan organizados de la manera que se pretende trabajar sobre ellos por lo que la funciónsplit()nos permitirá clasificar los datos ya sea dados en vector o como un data frame en tablas, para ello lo explicare con el siguiente ejemplo que muestra una data que contiene el nivel de satisfaccion(satisfaction_level) de empleados de una cierta compañia la cual la clasificaremos con respecto al tipo de ventas (sales) como se muestra en la Img 1. data tipo csv.

-Importando el archivo de formato csv

La lectura de un archivo de tipo csv hacia un data frame se hace por medio de la funcion read.csv como se muestra a continuación:

## # A tibble: 53 x 10
##    satisfaction_level last_evaluation number_project average_montly_hours
##                 <dbl>           <dbl>          <dbl>                <dbl>
##  1               0.38            0.53              2                  157
##  2               0.8             0.86              5                  262
##  3               0.11            0.88              7                  272
##  4               0.72            0.87              5                  223
##  5               0.37            0.52              2                  159
##  6               0.41            0.5               2                  153
##  7               0.89            0.92              5                  242
##  8               0.82            0.87              4                  239
##  9               0.4             0.49              2                  135
## 10               0.41            0.46              2                  128
## # ... with 43 more rows, and 6 more variables: time_spend_company <dbl>,
## #   Work_accident <dbl>, left <dbl>, promotion_last_5years <dbl>, sales <chr>,
## #   salary <chr>

Ahora nos enfocaremos solamente en tres variables: nivel de satisfacción (satisfaction_level), tipos de ventas(sales) y salario(salary) para fines didacticos para la cual reduciré mi data a tan solo las variables de interes.

Mostrando los 10 primeros datos con la función head()

##    HR.satisfaction_level   HR.sales HR.salary
## 1                   0.38      sales       low
## 2                   0.80      sales    medium
## 3                   0.11      sales    medium
## 4                   0.72      sales       low
## 5                   0.37      sales       low
## 6                   0.41      sales       low
## 7                   0.89      sales       low
## 8                   0.82      sales       low
## 9                   0.40      sales       low
## 10                  0.41 accounting       low

-Clasificación de la data con función split()

Supongase que ahora queremos obtener la misma información pero clasificado por tipo de venta(sales) para este proposito usaremos la función split().

## $accounting
##    HR.satisfaction_level   HR.sales
## 10                  0.41 accounting
## 11                  0.38 accounting
## 12                  0.09 accounting
## 46                  0.39 accounting
## 
## $hr
##    HR.satisfaction_level HR.sales
## 13                  0.45       hr
## 14                  0.40       hr
## 15                  0.45       hr
## 16                  0.84       hr
## 
## $IT
##    HR.satisfaction_level HR.sales
## 31                  0.11       IT
## 32                  0.10       IT
## 33                  0.36       IT
## 34                  0.11       IT
## 35                  0.81       IT
## 40                  0.74       IT
## 
## $management
##    HR.satisfaction_level   HR.sales
## 30                  0.85 management
## 49                  0.79 management
## 
## $marketing
##    HR.satisfaction_level  HR.sales
## 44                  0.40 marketing
## 50                  0.84 marketing
## 51                  0.11 marketing
## 52                  0.11 marketing
## 
## $product_mng
##    HR.satisfaction_level    HR.sales
## 36                  0.43 product_mng
## 37                  0.90 product_mng
## 38                  0.76 product_mng
## 39                  0.43 product_mng
## 41                  0.09 product_mng
## 42                  0.45 product_mng
## 43                  0.09 product_mng
## 
## $sales
##    HR.satisfaction_level HR.sales
## 1                   0.38    sales
## 2                   0.80    sales
## 3                   0.11    sales
## 4                   0.72    sales
## 5                   0.37    sales
## 6                   0.41    sales
## 7                   0.89    sales
## 8                   0.82    sales
## 9                   0.40    sales
## 45                  0.43    sales
## 53                  0.59    sales
## 
## $support
##    HR.satisfaction_level HR.sales
## 22                  0.40  support
## 23                  0.39  support
## 24                  0.10  support
## 25                  0.37  support
## 26                  0.11  support
## 47                  0.45  support
## 
## $technical
##    HR.satisfaction_level  HR.sales
## 17                  0.10 technical
## 18                  0.40 technical
## 19                  0.10 technical
## 20                  0.09 technical
## 21                  0.84 technical
## 27                  0.10 technical
## 28                  0.38 technical
## 29                  0.85 technical
## 48                  0.38 technical

A cada una de las tablas correspondientes a tipo de venta (sales) se tiene acceso de manera habitual para listas, por ejemplo, la tabla correspondiente a la venta de tipo technical.

##    HR.satisfaction_level  HR.sales
## 17                  0.10 technical
## 18                  0.40 technical
## 19                  0.10 technical
## 20                  0.09 technical
## 21                  0.84 technical
## 27                  0.10 technical
## 28                  0.38 technical
## 29                  0.85 technical
## 48                  0.38 technical

habiendo conluido podremos realizar los estadísticos descriptivos de manera mas simple si nuestro objetivo fuera realizarlo en cierta variable clasificada ya sea promedios, varianza, moda, mediana, etc.

Gracias por su atención