Capítulo5 Transformación: Estructura de un archivo y selecionar datos
Fecha de la ultima revisión
## [1] "2024-11-07"
El tema proviene de los siguientes sitios.
English: https://r4ds.had.co.nz/transform.html
Español: https://es.r4ds.hadley.nz/05-transform.html
## # A tibble: 6 × 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
## # ℹ 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>
5.1 Evaluar el archivo el vuelo
Mirar el archivo y entender la información antes de hacer cualquier analisis/
- Cual son las variables
- Cuales son. los tipos de datos
- int valores enteros,
- dbl números reales, significa dobles
- chr caracteres o vectores
- dttm fecha y tiempo, minutos
- date fecha
- S3: POSIXct Fecha y tiempo, minutos
- lgl valores logicos “cierto” (TRUE) y “falso” (FALSE)
- fctr factores categoricos.
Evalua en este archivo los tipos de variables que se encuentra.
## # A tibble: 336,776 × 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
## # ℹ 336,766 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>
5.1.1 Cual son todos los destinos de vuelos?
- cual función usará
## [1] "IAH" "MIA" "BQN" "ATL" "ORD" "FLL" "IAD" "MCO" "PBI" "TPA" "LAX" "SFO"
## [13] "DFW" "BOS" "LAS" "MSP" "DTW" "RSW" "SJU" "PHX" "BWI" "CLT" "BUF" "DEN"
## [25] "SNA" "MSY" "SLC" "XNA" "MKE" "SEA" "ROC" "SYR" "SRQ" "RDU" "CMH" "JAX"
## [37] "CHS" "MEM" "PIT" "SAN" "DCA" "CLE" "STL" "MYR" "JAC" "MDW" "HNL" "BNA"
## [49] "AUS" "BTV" "PHL" "STT" "EGE" "AVL" "PWM" "IND" "SAV" "CAK" "HOU" "LGB"
## [61] "DAY" "ALB" "BDL" "MHT" "MSN" "GSO" "CVG" "BUR" "RIC" "GSP" "GRR" "MCI"
## [73] "ORF" "SAT" "SDF" "PDX" "SJC" "OMA" "CRW" "OAK" "SMF" "TUL" "TYS" "OKC"
## [85] "PVD" "DSM" "PSE" "BHM" "CAE" "HDN" "BZN" "MTJ" "EYW" "PSP" "ACK" "BGR"
## [97] "ABQ" "ILM" "MVY" "SBN" "LEX" "CHO" "TVC" "ANC" "LGA"
5.1.2 Seleciona los vuelos donde el destino es San Juan
## # A tibble: 5,819 × 19
## anio mes dia horario_salida salida_programada atraso_salida
## <int> <int> <int> <int> <int> <dbl>
## 1 2013 1 1 615 615 0
## 2 2013 1 1 628 630 -2
## 3 2013 1 1 701 700 1
## 4 2013 1 1 711 715 -4
## 5 2013 1 1 820 820 0
## 6 2013 1 1 820 820 0
## 7 2013 1 1 840 845 -5
## 8 2013 1 1 926 929 -3
## 9 2013 1 1 1202 1159 3
## 10 2013 1 1 1245 1249 -4
## # ℹ 5,809 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>
5.1.4 Selecciona los vuelos que salen de San Juan en el dia de ti cumpleaños y contabiliza cuanto hubo
## [1] 19
5.1.4.1 Organizar los datos en orden de más grande a más pequeño
- Selecciona los mes, dia, destino, atraso_salida, atraso_llegada
- Selecciona solamente el mes de noviembre
- Selecciona solamente los vuelos a destino de a San Juan
- oraganiza los datos en orden de más atraso_salido de mayor a menor
## [1] "anio" "mes" "dia"
## [4] "horario_salida" "salida_programada" "atraso_salida"
## [7] "horario_llegada" "llegada_programada" "atraso_llegada"
## [10] "aerolinea" "vuelo" "codigo_cola"
## [13] "origen" "destino" "tiempo_vuelo"
## [16] "distancia" "hora" "minuto"
## [19] "fecha_hora"
vuelos %>%
dplyr::select(mes, dia, destino, atraso_salida, atraso_llegada) %>%
filter(mes==11) %>%
filter(destino =="SJU") %>%
arrange(desc(atraso_salida))
## # A tibble: 429 × 5
## mes dia destino atraso_salida atraso_llegada
## <int> <int> <chr> <dbl> <dbl>
## 1 11 7 SJU 231 190
## 2 11 28 SJU 223 235
## 3 11 23 SJU 187 154
## 4 11 24 SJU 181 188
## 5 11 23 SJU 157 165
## 6 11 12 SJU 145 127
## 7 11 10 SJU 94 88
## 8 11 24 SJU 90 112
## 9 11 30 SJU 68 59
## 10 11 21 SJU 66 42
## # ℹ 419 more rows
5.2 Temas: Reconocer y aplicar las diferentes funciones
Tipos de variables:
- int: valores enteros
- dbl: números reales
- chr: caracteres
- dttm: fecha y tiempo
- lgl: valores logicos
- fctr: factores
- date: fecha
Funciones de dplyr:
- filter() : seleccionar filas
- arrange(): ordenar filas
- select(): seleccionar columnas
- summarize(): resumir conjuntos de datos
- group_by(): agrupar por variables
library(datos)
library(tidyverse)
por_dia <- vuelos %>% # pipe
group_by(dia) %>% # group by day
summarise(atraso_promedio = mean(atraso_salida, na.rm = TRUE))
por_dia
## # A tibble: 31 × 2
## dia atraso_promedio
## <int> <dbl>
## 1 1 14.2
## 2 2 14.1
## 3 3 10.8
## 4 4 5.79
## 5 5 7.82
## 6 6 6.99
## 7 7 14.3
## 8 8 21.8
## 9 9 14.6
## 10 10 18.3
## # ℹ 21 more rows
## The median of the data set by day of the month
por_dia_2 <- vuelos %>%
group_by( dia) %>%
summarise(atraso_promedio = mean(atraso_salida, na.rm = TRUE),
atraso_mediana = median(atraso_salida, na.rm=TRUE))
por_dia_2
## # A tibble: 31 × 3
## dia atraso_promedio atraso_mediana
## <int> <dbl> <dbl>
## 1 1 14.2 -2
## 2 2 14.1 -1
## 3 3 10.8 -2
## 4 4 5.79 -3
## 5 5 7.82 -3
## 6 6 6.99 -2
## 7 7 14.3 -1
## 8 8 21.8 -1
## 9 9 14.6 -1
## 10 10 18.3 -1
## # ℹ 21 more rows
5.3 Funciones
- summarise = resumir conjuntos de datos
- mean, # promedio
- median, # mediana
- mode, # moda
- operaciones boolean
# El valor más común en un conjunto de datos
# Crear una función: no existe en los paquetes de R
getmode <- function(v) {
uniqv <- unique(v)
uniqv[which.max(tabulate(match(v, uniqv)))]
}
por_dia_3=vuelos |>
dplyr::select(dia, mes, atraso_salida) |>
group_by(dia) %>%
summarise(atraso_promedio = mean(atraso_salida, na.rm = TRUE),
atraso_max=max(atraso_salida, na.rm=TRUE),
atraso_mode = getmode(atraso_salida))
por_dia_3
## # A tibble: 31 × 4
## dia atraso_promedio atraso_max atraso_mode
## <int> <dbl> <dbl> <dbl>
## 1 1 14.2 853 -5
## 2 2 14.1 696 -4
## 3 3 10.8 878 -4
## 4 4 5.79 545 -5
## 5 5 7.82 896 -5
## 6 6 6.99 589 -4
## 7 7 14.3 653 -5
## 8 8 21.8 520 NA
## 9 9 14.6 1301 -4
## 10 10 18.3 1126 -5
## # ℹ 21 more rows
Añadir el promedio, mediana y moda al mismo data frame
## The mode of the value
library(DescTools)
por_dia_4 <- vuelos %>%
group_by(dia) %>%
summarise(atraso_promedio = mean(atraso_salida, na.rm = TRUE),
atraso_median = median(atraso_salida, na.rm=TRUE),
atraso_mode = getmode(atraso_salida))
por_dia_4
## # A tibble: 31 × 4
## dia atraso_promedio atraso_median atraso_mode
## <int> <dbl> <dbl> <dbl>
## 1 1 14.2 -2 -5
## 2 2 14.1 -1 -4
## 3 3 10.8 -2 -4
## 4 4 5.79 -3 -5
## 5 5 7.82 -3 -5
## 6 6 6.99 -2 -4
## 7 7 14.3 -1 -5
## 8 8 21.8 -1 NA
## 9 9 14.6 -1 -4
## 10 10 18.3 -1 -5
## # ℹ 21 more rows
5.4 Agrupar por múltiples variables
Aquí se agrupar por día y mes
vuelos %>%
dplyr::select(anio, mes, dia, atraso_llegada, destino) %>%
filter(destino =="SJU") %>%
filter(mes == 12 & dia ==25) %>%
# filter(mes == 12) %>%
group_by(dia, mes) %>%
summarise(atraso = mean(atraso_llegada, na.rm = TRUE))
## # A tibble: 1 × 3
## # Groups: dia [1]
## dia mes atraso
## <int> <int> <dbl>
## 1 25 12 3.57