Saltar al contenido

Lidiar con datos perdidos, inválidos y duplicados en R

Cuando observamos los datos utilizando la función glimpse() en la sección anterior, nos dimos cuenta de que la variable de edad tiene entradas incorrectas. Veamos el resumen de la variable de edad.

1sumario(dat$Age)

{r}

Lidiar con datos perdidos, inválidos y duplicados en R
Lidiar con datos perdidos, inválidos y duplicados en R

Salida:

12 Min. 1er Qu. Media de la media 3er Qu. Max. NA$0027s -12.00 36.50 51.00 49.03 61.00 76.00 2

La salida muestra que el valor mínimo de la variable “Edad” es -12. Esto es imposible y nos lleva al siguiente problema común en los conjuntos de datos del mundo real: la presencia de registros inexactos. Es seguro asumir que para las solicitudes de préstamo, la edad mínima debería ser de 18 años. Esto significa que eliminaremos los registros de los solicitantes menores de 18 años.

Las dos primeras líneas de código de abajo nos dan el número de registros en el conjunto de datos para los que la edad es menor de 18 años. El número de tales registros es siete, y se eliminan con la tercera línea de código. La cuarta línea imprime las dimensiones de los nuevos datos: 590 observaciones y 12 variables.

Por último, volvemos a ver el resumen de la variable de la edad. Esto muestra que el rango de edad es ahora de 23 a 76 años, lo que indica que se ha hecho la corrección.

1234567age_18 <- dat[which(dat$Age<18),]dim(age_18)dat <- dat[-which(dat$Age<18),]dim(dat)summary(dat$Age)

{r}

Salida:

1234[1] 590 12 Min. 1er Qu. Media Media 3er Qu. Max. NA$0027s 23.00 37.00 51.00 49.72 61.00 76.00 2

Fue fácil detectar entradas incorrectas en la variable de edad. En otros casos, los valores inválidos están en forma de valores atípicos. Veamos un ejemplo de la variable $0027Ingresos$0027. El resumen de la variable muestra que los niveles de ingresos mínimos y máximos son de 136700 y 3321001 dólares, respectivamente. Este es un rango muy sesgado, que indica algunos valores extremos. Para comprender mejor la distribución, utilizamos la función del cuantil , que nos da los valores del primer al centésimo percentil de la variable en la secuencia de unidad de percentil.

123summary(dat$Income)quantile(dat$Income,seq(0,1,0.01))

{r}

Salida:

1234567891011121314151617181920212223242526 Min. 1er Qu. Media Media 3er Qu. Max. 136700 386700 512800 687874 775300 3321001 0% 1% 2% 3% 4% 5% 6% 7% 8% 9% 136700 136700 210676 240000 244288 254540 263684 274664 286108 295100 10% 11% 12% 13% 14% 15% 16% 17% 18% 19% 301560 311100 317700 320000 329100 332220 333300 335288 344400 346700 20% 21% 22% 23% 24% 25% 26% 27% 28% 29% 352860 358800 363084 371396 383332 386700 391172 397980 401508 405556 30% 31% 32% 33% 34% 35% 36% 37% 38% 39% 410220 412724 421052 422244 424804 431960 437016 444400 448620 454972 40% 41% 42% 43% 44% 45% 46% 47% 48% 49% 458920 465068 468448 476468 479696 486180 491380 495548 500000 506956 50% 51% 52% 53% 54% 55% 56% 57% 58% 59% 512800 515552 523184 532012 536480 551820 555504 563080 572852 577700 60% 61% 62% 63% 64% 65% 66% 67% 68% 69% 585380 607584 611276 620300 625904 633300 648308 656708 666700 683156 70% 71% 72% 73% 74% 75% 76% 77% 78% 79% 700000 721040 733300 753968 761484 775300 788132 800000 807740 821696 80% 81% 82% 83% 84% 85% 86% 87% 88% 89% 834660 853300 880008 914712 963752 1010680 1058180 1111100 1149276 1219460 90% 91% 92% 93% 94% 95% 96% 97% 98% 99% 1262060 1333300 1392412 1502676 1664032 1944400 2064768 2223884 2608396 3197268 100% 3321001

Podemos eliminar los valores atípicos utilizando el método descrito en la sección anterior. También podemos abordarlos a través de un método diferente de pavimentar y tapar los valores extremos. La primera línea del código de abajo hace el piso de los valores atípicos más bajos en el primer valor del percentil, es decir, 136700 dólares. Del mismo modo, la segunda línea realiza la limitación de los valores atípicos más altos en el valor del percentil 99, es decir, 3321001 dólares.

La tercera línea de código imprime el nuevo resumen de la variable, indicando que la corrección ha sido hecha.

12345dat$Income[which(dat$Income&lt;136700)]<;- 136700dat$Income[which(dat$Income;3321001)]<;- 3321001sumario(dat$Income)

{r}

Salida:

12 Min. 1er Qu. Media de la media 3er Qu. Max. 136700 386175 508650 685301 772650 3321001