Codificación y Transformación
Como ya hemos visto brevemente en el capítulo de tipos de variables, normalmente los datos de un archivo necesitarán ser cuidadosamente preparados antes de poder aplicar, con las mínimas garantías, cualquier análisis estadístico.
La preparación del archivo de datos incluye desde la simple detección y corrección de los posibles errores cometidos al introducir los datos, hasta sofisticadas transformaciones, pasando por la recodificación de los códigos utilizados para los valores de una o más variables, o la creación de nuevas variables a partir de otras ya existentes.
Para ilustrar esta parte, vamos a leer la siguiente base de datos:
data <- read.csv("https://raw.githubusercontent.com/hadley/r4ds/main/data/students.csv")
str(data)'data.frame': 6 obs. of 5 variables:
$ Student.ID : int 1 2 3 4 5 6
$ Full.Name : chr "Sunil Huffmann" "Barclay Lynn" "Jayendra Lyne" "Leon Rossini" ...
$ favourite.food: chr "Strawberry yoghurt" "French fries" "N/A" "Anchovies" ...
$ mealPlan : chr "Lunch only" "Lunch only" "Breakfast and lunch" "Lunch only" ...
$ AGE : chr "4" "5" "7" "" ...
Ahora tendremos que comprobar que los datos se han leído correctamente y no tienen errores
Detección inicial de errores más comunes
En esta detección inicial lo que queremos ver es si:
El nombre de las variables son consistentes
Las variables están bien declarados
No hay valores incorrectos
Los NAs se han leído de forma correcta
Vamos a verlo de forma muy sencilla primero de forma manual para entender las cosas que hay que detectar y luego veremos como detectarlo de forma automática.
El nombre de las columnas debe tener un nombre consistente.
Las dos palabaras que corresponden a la columnas: Student.ID, Full.Name y favourite.food están separadas por un . y mealPlan se diferencia por una mayúscula. Además todas están en minúsculas y AGE en mayúsculas. Para evitar futuros errores, los nombres deberán ser consistentes.
Clasificar las variables en cuantitativas y cualitativas y declararlas de forma correcta
Asegurarnos que los NA se han leído correctamente
Columna favourite_food tiene un N/A que no está detectado como dato "missing" y un vacío en age
Para buscar posibles errores o NA mal declarados podemos hacer uso de sentencias sencillas como summary() o table()
Asegurarnos que no hay valores incorrectos:
En la variable age, una de las observaciones tiene "five" en vez del número, esto nos causará problemas a la hora de usar dicha variable como variable numérica como hemos visto al declararla con as.numeric().
Así quedaría la base de datos corregida
Transformación de variables
En ocasiones nos puede interesar incorporar nuevas variables a nuestra base de datos, como ya vimos con la creación de la variable edad
Ejemplo
Para este ejemplo vamos a utilizar el dataset TiposDatos.csv
Aprovechamos para hacer un breve repaso de los tipos de variables y control de errores
Cuando una base de datos contiene la fecha de nacimiento, es mucho más útil generar la edad, más fácil de interpretar, analizar como variable en si misma y manejar numéricamente:
Podemos querer crear una variable en la base de datos TiposDatos.csv que se llame índice de masa corporal que se obtiene de la siguiente forma:
Categorizar una variable cuantitativa en una cualitativa
Esta opción suele ser muy habitual ya que muchas veces queremos trabajar con las categorías de una variable en vez de la variable cuantitativa.
Ejemplo
La variable cuantitativa IMC que acabamos de crear se suele usar en cuatro grupos:
bajo peso: IMC <= 18.50
normal: 18.5 < IMC <=25
sobrepeso: 25 < IMC <= 30
obesidad: IMC >30
En realidad buscamos los siguientes tramos de IMC: (minimo, 18.5], (18.5, 25], (25, 30], (30, máximo]
¿Cuántas personas tenemos en cada uno de los grupos?
Recodificación de variables
Nos puede interesar trabajar de forma diferente sobre una de las variables que ya tenemos
Ejemplo
Queremos ver la probabilidad de estar casado o de tener un determinado peso si la persona tiene más de 40 años o menos y queremos poder predecir dicha variable, para aplicar en este caso una regresión logística necesitaremos tener una variable codificada como: 0 (<40), 1 (>=40). Esto con el comando if_else() del paquete dplyr es muy fácil:
¿Qué tipo de variable es edad2Cat?
Es una variable cualitativa que toma dos categorías: 0 (<40), 1 (>=40)
Es una buena práctica recodificar siempre en distintas variables para no perder información.
Ahora es tu turno: Realiza los siguientes ejercicios:
Ejercicio 1.2: Codificación y TransformaciónLast updated
