Capítulo7 Transformación: Valores Faltantes
## [1] "2024-11-07"
Fecha de la ultima revisión
7.1 Valores faltantes
- NA: Not Available
7.2 Contabilizar los NA
- ¿Cuántos vuelos tienen datos faltantes en horario_salida?
- ¿Qué otras variables tienen valores faltantes?
- ¿Qué representan estas filas?
## .
## FALSE TRUE
## 328521 8255
7.3 Seleccionar solamente los vuelos donde el “horario de salida” es desconocido
vuelos %>%
dplyr::select(anio, mes, dia, horario_salida, aerolinea) |>
filter(is.na(horario_salida))
## # A tibble: 8,255 × 5
## anio mes dia horario_salida aerolinea
## <int> <int> <int> <int> <chr>
## 1 2013 1 1 NA EV
## 2 2013 1 1 NA AA
## 3 2013 1 1 NA AA
## 4 2013 1 1 NA B6
## 5 2013 1 2 NA EV
## 6 2013 1 2 NA EV
## 7 2013 1 2 NA EV
## 8 2013 1 2 NA EV
## 9 2013 1 2 NA EV
## 10 2013 1 2 NA AA
## # ℹ 8,245 more rows
7.4 Otras funciones: NA
- na.rm=TRUE
- !is.na() = is not NA, pq al frente tiene “!”
## # A tibble: 327,346 × 19
## anio mes dia horario_salida salida_programada atraso_salida
## <int> <int> <int> <int> <int> <dbl>
## 1 2013 1 1 517 515 2
## 2 2013 1 1 533 529 4
## 3 2013 1 1 542 540 2
## 4 2013 1 1 544 545 -1
## 5 2013 1 1 554 600 -6
## 6 2013 1 1 554 558 -4
## 7 2013 1 1 555 600 -5
## 8 2013 1 1 557 600 -3
## 9 2013 1 1 557 600 -3
## 10 2013 1 1 558 600 -2
## # ℹ 327,336 more rows
## # ℹ 13 more variables: horario_llegada <int>, llegada_programada <int>,
## # atraso_llegada <dbl>, aerolinea <chr>, vuelo <int>, codigo_cola <chr>,
## # origen <chr>, destino <chr>, tiempo_vuelo <dbl>, distancia <dbl>,
## # hora <dbl>, minuto <dbl>, fecha_hora <dttm>
## # A tibble: 365 × 4
## # Groups: anio, mes [12]
## anio mes dia mean
## <int> <int> <int> <dbl>
## 1 2013 1 1 11.4
## 2 2013 1 2 13.7
## 3 2013 1 3 10.9
## 4 2013 1 4 8.97
## 5 2013 1 5 5.73
## 6 2013 1 6 7.15
## 7 2013 1 7 5.42
## 8 2013 1 8 2.56
## 9 2013 1 9 2.30
## 10 2013 1 10 2.84
## # ℹ 355 more rows
## # A tibble: 365 × 4
## # Groups: anio, mes [12]
## anio mes dia mean
## <int> <int> <int> <dbl>
## 1 2013 1 1 11.5
## 2 2013 1 2 13.9
## 3 2013 1 3 11.0
## 4 2013 1 4 8.95
## 5 2013 1 5 5.73
## 6 2013 1 6 7.15
## 7 2013 1 7 5.42
## 8 2013 1 8 2.55
## 9 2013 1 9 2.28
## 10 2013 1 10 2.84
## # ℹ 355 more rows
Reemplazar los NA por “0” en el archivo de datos
datos_NA=c(1:8, NA, 10:20)
datos_NA=as.data.frame(datos_NA)
datos_NA %>% # Cual es el problema de replace_na(datos_NA, 0) para los analisis?
mutate(Prom_cum=cummean(replace_na(datos_NA, 0))) %>%
mutate(Var_cum=cumstats::cumvar(replace_na(datos_NA, 0)))
## datos_NA Prom_cum Var_cum
## 1 1 1.000000 NA
## 2 2 1.500000 0.500000
## 3 3 2.000000 1.000000
## 4 4 2.500000 1.666667
## 5 5 3.000000 2.500000
## 6 6 3.500000 3.500000
## 7 7 4.000000 4.666667
## 8 8 4.500000 6.000000
## 9 NA 4.000000 7.500000
## 10 10 4.600000 10.266667
## 11 11 5.181818 12.963636
## 12 12 5.750000 15.659091
## 13 13 6.307692 18.397436
## 14 14 6.857143 21.208791
## 15 15 7.400000 24.114286
## 16 16 7.937500 27.129167
## 17 17 8.470588 30.264706
## 18 18 9.000000 33.529412
## 19 19 9.526316 36.929825
## 20 20 10.050000 40.471053
Remover las filas que tienen NA con la función drop_na()
datos_NA %>%
drop_na() |>
mutate(Prom_cum=cummean(datos_NA)) %>%
mutate(Var_cum=cumstats::cumvar(datos_NA))
## datos_NA Prom_cum Var_cum
## 1 1 1.000000 NA
## 2 2 1.500000 0.500000
## 3 3 2.000000 1.000000
## 4 4 2.500000 1.666667
## 5 5 3.000000 2.500000
## 6 6 3.500000 3.500000
## 7 7 4.000000 4.666667
## 8 8 4.500000 6.000000
## 9 10 5.111111 8.611111
## 10 11 5.700000 11.122222
## 11 12 6.272727 13.618182
## 12 13 6.833333 16.151515
## 13 14 7.384615 18.756410
## 14 15 7.928571 21.456044
## 15 16 8.466667 24.266667
## 16 17 9.000000 27.200000
## 17 18 9.529412 30.264706
## 18 19 10.055556 33.467320
## 19 20 10.578947 36.812865