1 Entendiendo los datos

En cualquier proyecto de Machine Learning o IA te vas a encontrar con datos. No podemos realizar gráficos o construir y desarrolar modelos sin ignorar la tarea anterior, que es entender los datos y su preparación.

En cualqier base de datos pobrablemente los datos estarán desordenados, serán complejos, y tendrán diferentes tipos de formato, e incluso faltarán. Para entrenar bien cualquier algoritmo, hay que explorar y preparar dichos datos.

La forma en que R maneja los datos nos dicta la forma en que debemos trabajar con ellos, asi que será útil entender los tipos de estructuras y datos que maneja R, antes de saltar a la parte de preparación de estos.

2 Estructuras de datos en R

En cada lenguaje de programación encontrarás bastantes tipos de estructuras de datos, cada una co sus fortalezas y debilidades. Las más usadas en R son los vectores, factores, listas, matrices, arrays y dataframes. Cada uno está destinado para una tarea específica, asi que será útil saber como interactuan en nuestro protyecto R.

Vectores

Es la estructura fundamental de datos, una serie de datos ordenados en celdas. Cada celda del vector le llamamos elemento. Un vector puede contener cualquier número de elementos, pero estos deben de ser del mismo tipo ; es decir, no puede haber por ejemplo letras y números. Además conviene recordar que R diferencia las mayúsculas de las minúsculas (R no es igual a r).

Algunos de los tipos de vector mas utilizados son:

Integer (números sin decimales)

Double (números con decimales)

Character (letras)

Logical (Verdadero, Falso)

Y dentro de los vectores, hay dos tipos de valores importantes: NA´s (valores que faltan, valores perdidos) y NULL (ausencia de cualquier valor). y aunque puedan parecer similares, su tratamiento es completamente diferente.

Podemos crear valores a mano con la funcion c() (“combine function”). El vector creado lo nombraremos usando el operador “<-”. Este operador funciona igual que “=” , pero en R es la forma de programación común.

Vamos a la parte práctica, y construyamos un conjunto de vectores, con los datos de 3 pacientes. Creamos un vector para el nombre del paciente, de tipo character, otro de tipo double para su temperatura, y otro logico para su diagnóstico.

nombre <- c("Juan", "Pedro", "Angel", "Rosa", "Julia")
temperatura <- c(36.5, 36.8, 38.7, 36.2, 38.4)
diagnostico <- c(FALSE, FALSE, TRUE, FALSE, TRUE)

Los valores asociados en cada vector mantienen el orden. Podemos acceder al dato de cada paciente por su posición en el conjunto. Si pedro es el paciente 2, su temperatura será:

temperatura [2]
## [1] 36.8

Si queremos obtener un rango de valores, podemos obtener los datos de los pacientes del 2 al 4 por ejemplo:

temperatura [2:4]
## [1] 36.8 38.7 36.2

O si queremos excluir la temperatura de Pedro:

temperatura [-2]
## [1] 36.5 38.7 36.2 38.4

Otra forma de excluir un dato es especificando un vector lógico , indicando lo que será incluido (TRUE) o excluido. Ahora excluimos la temperatura de Angel:

temperatura [c(TRUE, TRUE, FALSE, TRUE, TRUE)]
## [1] 36.5 36.8 36.2 38.4

Y podemos crear un vector, como por ejemplo que paciente tiene fiebre, dependiente de la temperatura.

fiebre <- temperatura > 38
nombre [fiebre]
## [1] "Angel" "Julia"

Esta salida es análoga a esta otra, y nos habríamos ahorrado declarar la variable (fiebre)

nombre [temperatura > 38]
## [1] "Angel" "Julia"

Seguro que ya hemos pensado que para que sirve R si tenemos que introducir los datos de forma manual….no puedo imaginar un vector con 5000 valores diferentes…

Para trabajar de forma más comoda podemos incluir estos dos comandos (que más tarde se explicarán) pero que básicamente son librerías y que además incluyen conjuntos de datos para poder practicar:

library (car)
## Cargando paquete requerido: carData
library (carData)

Si pulsamos en la ventala de Packages, veremos CarData activado. si pulsamos en el nos lleva directamente a la ventana Help, donde vemos todos los conjuntos de datos a nuestra disposición, y dentro de cada datasete los formatos y valroes incluidos en cada uno.