str(Datos_pasajeros)
## 'data.frame': 216 obs. of 6 variables:
## $ Anio.mes : int 201501 201501 201501 201501 201501 201501 201501 201501 201501 201501 ...
## $ Codigo.IATA : chr "CEN" "CLQ" "CME" "CPE" ...
## $ Descripcion : chr "Ciudad Obregon" "Colima" "Ciudad del Carmen" "Campeche" ...
## $ Estado : chr "Sonora" "Colima" "Campeche" "Campeche" ...
## $ Pasajeros.nacionales : int 17149 8486 56079 13264 13153 4695 1315 1050 6684 5609 ...
## $ Pasajeros.internacionales: int 721 124 3126 215 0 139 386 2684 61 10 ...
Este Data.frame contiene 6 variables:
1.
Anio.mes: Esta varuable contiene el año y mes de los datos
registrados, en un solo número, los primeros cuatro dígitos de izquierda
a derecha corresponden al año, seguidos de dos dígitos que corresponden
al mes. Para una visualización más clara voy a crear una variable a
partir de esta con nombre mes, de tipo factor (Enero, Febrero,
etc.).
2. Codigo.IATA: Contiene el código IATA para
los aeropuestor censados con tres letras mayusculas. Esta variable es de
tipo cadena de texto.
3. Descripcion: Contiene la
ciudad correspondiente al aeropuerto. Es de tipo cadena de texto.
4. Estado: Contiene el estado de la Républica Mexicana en
donde se encuentra el aeropuerto. Es de tipo de cadena de texto.
5. Pasajeros.nacionales: Contiene el total de pasajeros de
vuelos nacionales. Es de tipo número entero.
6.
Pasajeros.internacionales: Contiene el total de pasajeros de
vuelos internacionales. Es de tipo número entero.
Las variables
de tipo cadena de texto las trasfomaré en tipo factor con el siguiente
código:
#primero recodifica el anio.mes a mes y la vuelvo tipo factor
Datos_pasajeros <- Datos_pasajeros %>%
mutate(Mes = recode(as.factor(Anio.mes),
"201501" = "Enero",
"201502" = "Febrero",
"201503" = "Marzo",
"201504" = "Abril",
"201505" = "Mayo",
"201506" = "Junio",
"201507" = "Julio",
"201508" = "Agosto",
"201509" = "Septiembre",
"201510" = "Octubre",
"201511" = "Noviembre",
"201512" = "Diciembre"))
#transformo el tipo de dato a factor
Datos_pasajeros=Datos_pasajeros %>%
mutate(Codigo.IATA=as.factor(Codigo.IATA),
Descripcion=as.factor(Descripcion),
Estado=as.factor(Estado))
Usé la función “skim” para generar un resumen
estadístico, y comparar con la función “summary”. La principal
diferencia que veo es en la presentación de los datos en eskim se
agurpan los resumenes de los datos categóricos por separado de los
númericos, a estos últimos les calcula la desviación estandar, y pone un
histograma.
# Función "summary" del código base de R
summary(Datos_pasajeros)
## Anio.mes Codigo.IATA Descripcion
## Min. :201501 CEN : 12 Campeche : 12
## 1st Qu.:201504 CLQ : 12 Chetumal : 12
## Median :201507 CME : 12 Ciudad del Carmen: 12
## Mean :201507 CPE : 12 Ciudad Obregon : 12
## 3rd Qu.:201509 CTM : 12 Ciudad Victoria : 12
## Max. :201512 CVM : 12 Colima : 12
## (Other):144 (Other) :144
## Estado Pasajeros.nacionales Pasajeros.internacionales
## Sonora :36 Min. : 63 Min. : 0.0
## Tamaulipas :36 1st Qu.: 1198 1st Qu.: 7.0
## Campeche :24 Median : 7947 Median : 107.0
## Puebla :24 Mean :10608 Mean : 818.2
## Baja California Sur:12 3rd Qu.:14884 3rd Qu.: 584.0
## Colima :12 Max. :56418 Max. :7042.0
## (Other) :72
## Mes
## Enero : 18
## Febrero: 18
## Marzo : 18
## Abril : 18
## Mayo : 18
## Junio : 18
## (Other):108
# Función "skim" de la librería "Skimr"
skim(Datos_pasajeros)
| Name | Datos_pasajeros |
| Number of rows | 216 |
| Number of columns | 7 |
| _______________________ | |
| Column type frequency: | |
| factor | 4 |
| numeric | 3 |
| ________________________ | |
| Group variables | None |
Variable type: factor
| skim_variable | n_missing | complete_rate | ordered | n_unique | top_counts |
|---|---|---|---|---|---|
| Codigo.IATA | 0 | 1 | FALSE | 18 | CEN: 12, CLQ: 12, CME: 12, CPE: 12 |
| Descripcion | 0 | 1 | FALSE | 18 | Cam: 12, Che: 12, Ciu: 12, Ciu: 12 |
| Estado | 0 | 1 | FALSE | 12 | Son: 36, Tam: 36, Cam: 24, Pue: 24 |
| Mes | 0 | 1 | FALSE | 12 | Ene: 18, Feb: 18, Mar: 18, Abr: 18 |
Variable type: numeric
| skim_variable | n_missing | complete_rate | mean | sd | p0 | p25 | p50 | p75 | p100 | hist |
|---|---|---|---|---|---|---|---|---|---|---|
| Anio.mes | 0 | 1 | 201506.50 | 3.46 | 201501 | 201503.8 | 201506.5 | 201509.25 | 201512 | ▇▅▅▅▇ |
| Pasajeros.nacionales | 0 | 1 | 10608.42 | 11609.62 | 63 | 1198.5 | 7947.0 | 14883.75 | 56418 | ▇▃▁▁▁ |
| Pasajeros.internacionales | 0 | 1 | 818.25 | 1522.77 | 0 | 7.0 | 107.0 | 584.00 | 7042 | ▇▁▁▁▁ |
Usando la librería “janitor”, con la función “tabyl” se pueden generar tablas de frecuencias y de contingencia de dos variables.
Datos_pasajeros%>%
tabyl(Mes, Estado)%>%
adorn_totals(c("row", "col"))%>%
adorn_percentages("all") %>% # Calcula porcentajes sobre el total general
adorn_pct_formatting(digits = 1, rounding = "half up") %>% # Formatea como porcentaje (%)
adorn_ns(position = "front") # Añade el conteo original (N) delante del porcentaje
## Mes Baja California Sur Campeche Colima Michoacan Nayarit
## Enero 1 (0.5%) 2 (0.9%) 1 (0.5%) 1 (0.5%) 1 (0.5%)
## Febrero 1 (0.5%) 2 (0.9%) 1 (0.5%) 1 (0.5%) 1 (0.5%)
## Marzo 1 (0.5%) 2 (0.9%) 1 (0.5%) 1 (0.5%) 1 (0.5%)
## Abril 1 (0.5%) 2 (0.9%) 1 (0.5%) 1 (0.5%) 1 (0.5%)
## Mayo 1 (0.5%) 2 (0.9%) 1 (0.5%) 1 (0.5%) 1 (0.5%)
## Junio 1 (0.5%) 2 (0.9%) 1 (0.5%) 1 (0.5%) 1 (0.5%)
## Julio 1 (0.5%) 2 (0.9%) 1 (0.5%) 1 (0.5%) 1 (0.5%)
## Agosto 1 (0.5%) 2 (0.9%) 1 (0.5%) 1 (0.5%) 1 (0.5%)
## Septiembre 1 (0.5%) 2 (0.9%) 1 (0.5%) 1 (0.5%) 1 (0.5%)
## Octubre 1 (0.5%) 2 (0.9%) 1 (0.5%) 1 (0.5%) 1 (0.5%)
## Noviembre 1 (0.5%) 2 (0.9%) 1 (0.5%) 1 (0.5%) 1 (0.5%)
## Diciembre 1 (0.5%) 2 (0.9%) 1 (0.5%) 1 (0.5%) 1 (0.5%)
## Total 12 (5.6%) 24 (11.1%) 12 (5.6%) 12 (5.6%) 12 (5.6%)
## Oaxaca Puebla Quintana Roo San Luis Potosi Sonora Tamaulipas
## 1 (0.5%) 2 (0.9%) 1 (0.5%) 1 (0.5%) 3 (1.4%) 3 (1.4%)
## 1 (0.5%) 2 (0.9%) 1 (0.5%) 1 (0.5%) 3 (1.4%) 3 (1.4%)
## 1 (0.5%) 2 (0.9%) 1 (0.5%) 1 (0.5%) 3 (1.4%) 3 (1.4%)
## 1 (0.5%) 2 (0.9%) 1 (0.5%) 1 (0.5%) 3 (1.4%) 3 (1.4%)
## 1 (0.5%) 2 (0.9%) 1 (0.5%) 1 (0.5%) 3 (1.4%) 3 (1.4%)
## 1 (0.5%) 2 (0.9%) 1 (0.5%) 1 (0.5%) 3 (1.4%) 3 (1.4%)
## 1 (0.5%) 2 (0.9%) 1 (0.5%) 1 (0.5%) 3 (1.4%) 3 (1.4%)
## 1 (0.5%) 2 (0.9%) 1 (0.5%) 1 (0.5%) 3 (1.4%) 3 (1.4%)
## 1 (0.5%) 2 (0.9%) 1 (0.5%) 1 (0.5%) 3 (1.4%) 3 (1.4%)
## 1 (0.5%) 2 (0.9%) 1 (0.5%) 1 (0.5%) 3 (1.4%) 3 (1.4%)
## 1 (0.5%) 2 (0.9%) 1 (0.5%) 1 (0.5%) 3 (1.4%) 3 (1.4%)
## 1 (0.5%) 2 (0.9%) 1 (0.5%) 1 (0.5%) 3 (1.4%) 3 (1.4%)
## 12 (5.6%) 24 (11.1%) 12 (5.6%) 12 (5.6%) 36 (16.7%) 36 (16.7%)
## Veracruz Total
## 1 (0.5%) 18 (8.3%)
## 1 (0.5%) 18 (8.3%)
## 1 (0.5%) 18 (8.3%)
## 1 (0.5%) 18 (8.3%)
## 1 (0.5%) 18 (8.3%)
## 1 (0.5%) 18 (8.3%)
## 1 (0.5%) 18 (8.3%)
## 1 (0.5%) 18 (8.3%)
## 1 (0.5%) 18 (8.3%)
## 1 (0.5%) 18 (8.3%)
## 1 (0.5%) 18 (8.3%)
## 1 (0.5%) 18 (8.3%)
## 12 (5.6%) 216 (100.0%)
### Histograma de pasajeros nacionales
ggplot(Datos_pasajeros, aes(x=Pasajeros.nacionales)) +
geom_histogram(binwidth =8000, fill="darkblue",
color="black", alpha =0.7) +
labs( title="Histograma de Pasajeros Nacionales",
x="Número de Pasajeros", y="Frecuencia")
Gráfico de barras del total de pasajeros por estado
Datos_pasajeros_sum=Datos_pasajeros%>%
group_by(Estado)%>%
summarise(
total_pasajeros=sum(Pasajeros.nacionales)+sum(Pasajeros.internacionales)
)
ggplot(Datos_pasajeros_sum, aes(x=Estado, y=total_pasajeros))+
geom_bar(stat = "identity", fill="green", color="black")+
labs(title = "Gráfico de Barras del Total de pasajeros por Estado" , x="Estado" , y="Total de Pasajeros")
en todos los mese hay datos atipicos con más de 40 mil pasajeros
nacionales
ggplot(Datos_pasajeros, aes(x=Mes, y=Pasajeros.nacionales))+
geom_boxplot(fill="orange", color="black", alpha=0.7)+
labs(title = "Dispersión de pasajeros nacionales por mes", x="Meses", y="Pasajeros")
El aeropuerto con más pasajeros es el CME con más de 40 mil, es el
aeropuerto que genera los datos atipicos en las gráficas anteriores
ggplot(Datos_pasajeros, aes(x=Codigo.IATA, y=Pasajeros.nacionales))+
geom_boxplot(fill="pink", color="black", alpha=0.7)+
labs(title = "Dispersión de pasajeros nacionales por Aeropuerto", x="Aeropuerto", y="Pasajeros")
Un gráfico que relacione dos variables numéricas
ggplot(Datos_pasajeros, aes(x=Pasajeros.nacionales, y=Pasajeros.internacionales))+
geom_point(color="brown", size=4, alpha=0.7)+
labs(title = "relación pasajeros nacionales e internacionales", x="nacionales",
y="internacionales")