1.3 R un poco mas avanzado…
Ya vimos brevemente como crear datos en R, un par de estructuras y como exportarlos. Vamos a hablar ahora un poco sobre como hacer cambios en la estructura de los datos (i.e. procesamiento).
1.3.1 for
loops
Un for
loop es una estructura de control en R
que permite repetir una acción una cierta cantidad de veces. Por ejemplo, para imprimir los números del 1
al 10
, se puede usar el siguiente for loop
:
for (i in 1:10) {
print(i)
}
## [1] 1
## [1] 2
## [1] 3
## [1] 4
## [1] 5
## [1] 6
## [1] 7
## [1] 8
## [1] 9
## [1] 10
Este for
loop recorrerá el vector 1:10
e imprimirá cada elemento del vector. La variable i
es una variable temporal que se usa para almacenar los valores del vector. Esto quiere decir que cada vez que el for loop
se ejecuta, i
tomará el valor del elemento actual del vector.
Los for
loops también se pueden usar para realizar operaciones matemáticas. Por ejemplo, para realizar la suma de los números del 1
al 10
, se puede usar el siguiente for loop
:
<- 0
suma for (i in 1:10) {
<- suma + i
suma
}print(suma)
## [1] 55
En este for
loop, la variable suma
se usa para almacenar el resultado de la suma. Cada vez que el for loop
se ejecuta, el valor de suma
se actualiza con el resultado de la suma de la variable i
. Al final de la ejecución, el valor de suma
será 55`.
1.3.2 Vectorizando
R
es un lenguaje de computación vectorizado, lo que significa que los bucles for
no son necesarios para realizar operaciones matemáticas. Esto permite que se realicen operaciones más rápido y con menos código. Por ejemplo, para realizar la suma de los números del 1
al 10
, no se necesita usar un for
loop. En su lugar, se puede usar la función sum()
de la siguiente manera:
<- sum(1:10)
suma print(suma)
## [1] 55
Esto imprimirá el mismo resultado que el for
loop anterior (55).
Vectorizar los cálculos también es útil para realizar operaciones con matrices. Por ejemplo, para calcular el promedio de los elementos de la matriz mi_matriz
, se puede usar la función mean()
de la siguiente manera:
<- mean(mi_matriz)
promedio print(promedio)
## [1] 5
Esto imprimirá el promedio de los elementos de la matriz (5`).
1.3.3 Funciones de la familia *apply
Las funciones de la familia apply
son un conjunto de funciones de R
que permiten aplicar una función a una matriz de forma vectorizada. Esto significa que se pueden realizar operaciones matemáticas sin usar bucles for
. Por ejemplo, para calcular la suma de los elementos de la matriz mi_matriz
, se puede usar la función apply()
de la siguiente manera:
<- apply(mi_matriz, 1, sum)
suma print(suma)
## [1] 12 15 18
Esto imprimirá la suma de los elementos de cada fila (por eso el segundo elemento es 1
) de la matriz (6
, 15
, 24
).
Otras funciones de la familia apply
son lapply()
, sapply()
y mapply()
. Estas funciones se usan para aplicar una función a una lista, vector o matriz, respectivamente. Por ejemplo, para calcular el promedio de los elementos de la matriz mi_matriz
, se puede usar la función apply()
de la siguiente manera:
<- apply(mi_matriz, 2, mean)
promedio print(promedio)
## [1] 2 5 8
Esto imprimirá el promedio de los elementos de cada columna de la matriz (2, 5, 8).
1.3.4 data.table
data.table
es un paquete de R
que permite manipular grandes cantidades de datos de una manera más eficiente que otros paquetes. Por ejemplo, para cargar un conjunto de datos en R
, se puede usar la función read.csv()
. Sin embargo, esta función puede ser muy lenta cuando se trabaja con grandes conjuntos de datos. En su lugar, se puede usar la función fread()
de data.table
para cargar los datos de una manera más rápida. Por ejemplo, para cargar el conjunto de datos mi_datos.csv
, se puede usar la siguiente línea:
library(data.table)
<- fread("mi_matriz.csv") mi_matriz
Además de la carga de datos, data.table
también permite realizar operaciones de manipulación y agregación de datos de una manera más eficiente que otras funciones. Por ejemplo, para calcular el promedio de los datos en la tabla mi_datos
, se puede usar la función data.table()
de la siguiente manera:
<- data.table(mi_matriz)[, mean(mi_matriz$valor)] promedio
## Warning in mean.default(mi_matriz$valor): argument is not numeric or
## logical: returning NA
print(promedio)
## [1] NA
Esto imprimirá el promedio de los datos en la tabla.
1.3.5 El tidy
verso
Tidyverse
es un conjunto de paquetes y herramientas de R
que permiten realizar análisis de datos de manera más eficiente y fácil. Estos paquetes incluyen dplyr
, tidyr
, ggplot2
, readr
y purrr
. Estos paquetes se usan para realizar operaciones de manipulación, agregación, visualización y análisis de datos.
1.3.6 dplyr
Dplyr
es un paquete de R
que permite manipular grandes conjuntos de datos de una manera más eficiente. Esto se logra usando una sintaxis fácil de leer y entender. Por ejemplo, para filtrar los datos en la tabla mi_datos
, se puede usar la función filter()
de dplyr
de la siguiente manera:
library(tidyverse)
-1] %>%
mi_matriz[,summarise(across(everything(), mean))
## V1 V2 V3
## 1 2 5 8
dplyr
también cuenta con otras funciones útiles como arrange()
para ordenar los datos, select()
para seleccionar las columnas deseadas y mutate()
para crear nuevas columnas. Estas herramientas permiten realizar operaciones de manipulación de datos de manera mucho más eficiente.