Saltar al contenido

Codificación de datos con R

En las secciones anteriores, aprendimos a codificar variables categóricas. Sin embargo, a veces puede ser útil llevar a cabo la codificación también para las variables numéricas. Por ejemplo, el Algoritmo Ingenuo de Bayes requiere que todas las variables sean categóricas, por lo que es necesario codificar las variables numéricas. Esto también se denomina «binning».

Consideraremos la variable de ingresos como un ejemplo. Veamos las estadísticas resumidas de esta variable.

Codificación de datos con R
Codificación de datos con R
1sumario(dat$Income)

{r}

Salida:

12 Min. 1er Qu. Media de la media 3er Qu. Max. 133300 384975 508350 706302 766100 8444900

Los valores de los ingresos oscilan entre 133.300 y 8,44 millones de dólares, lo que demuestra que la distribución es correcta. Uno de los beneficios adicionales del binning es que también se ocupa de los valores atípicos. Vamos a crear tres niveles de la variable Ingreso, que son «Bajo» para los niveles de ingreso que están por debajo de 380.000 dólares, «Alto» para los valores de ingreso por encima de 760.000 dólares, y «Medio 50» para los 50 valores porcentuales medios de la distribución del ingreso.

El primer paso es crear un vector de estos puntos de corte, lo que se hace en la primera línea de código de abajo. La segunda línea da los nombres respectivos a estos puntos de corte. La tercera línea utiliza la función cut() para romper el vector utilizando los puntos de corte. Finalmente, comparamos la variable original de Ingresos con la variable binned Ingresos_Nuevos usando la función summary().

123456789bins <- c(-Inf, 384975, 766100, Inf)bin_names <- c("Low", "Mid50", "High")dat$Income_new <- cut(dat$Income, breaks = bins, labels = bin_names)summary(dat$Income)summary(dat$Income_new)

{r}

Salida:

12345 Min. 1er Qu. Media de la media 3er Qu. Max. 133300 384975 508350 706302 766100 8444900 Bajo Medio50 Alto 150 301 149

La salida anterior muestra que la variable ha sido eliminada. También es posible crear automáticamente cortes de bin, como se muestra en el código de abajo. En este caso, creamos 5 contenedores de aproximadamente el mismo ancho para la variable Age.

12345dat$Age_new <- cut(dat$Age, breaks = 5, labels = c("Bin1", "Bin2", "Bin3", "Bin4", "Bin5"))summary(dat$Age)summary(dat$Age_new)

{r}

Salida:

12345 Min. 1er Qu. Media de la media 3er Qu. Max. 22.00 36.00 50.00 49.31 61.00 76.00 Bin1 Bin2 Bin3 Bin4 Bin5 108 117 114 162 99