Información obtenida del Automated Surface Observing System (ASOS) de los aeropuertos de todo el mundo.
# install.packages("riem")
library(riem)
# install.packages("tidyverse")
library(tidyverse)
# install.packages("ggplot2")
library(ggplot2)
# install.packages("lubridate")
library(lubridate)
# PASO 1. Buscar la red (paÃs) - Ejemplo: México, y copiar CODE
head(riem_networks())
## # A tibble: 6 × 2
## code name
## <chr> <chr>
## 1 AE__ASOS United Arab Emirates ASOS
## 2 AF__ASOS Afghanistan ASOS
## 3 AG__ASOS Antigua and Barbuda ASOS
## 4 AI__ASOS Anguilla ASOS
## 5 AK_ASOS Alaska ASOS
## 6 AL__ASOS Albania ASOS
# PASO 2. Buscar la estación (ciudad) - Ejemplo: Monterrey, y copiar ID
head(riem_stations("MX__ASOS"))
## # A tibble: 6 × 22
## index id synop name country elevation network online plot_name modified
## <int> <chr> <dbl> <chr> <chr> <dbl> <chr> <lgl> <chr> <chr>
## 1 0 MMAA 99999 Acapulco MX 5 MX__AS… TRUE "ACAPULC… 2020-07…
## 2 1 MMAS 99999 Aguasca… MX 1863 MX__AS… TRUE "AGUASCA… 2023-12…
## 3 2 MMSL 99999 Cabo Sa… MX 140 MX__AS… TRUE "CABO SA… 2020-07…
## 4 3 MMCP 99999 Campeche MX 5 MX__AS… TRUE "CAMPECH… 2023-12…
## 5 4 MMUN NA Cancun MX 10.1 MX__AS… TRUE "Cancun" 2020-07…
## 6 5 MMCM NA Chetumal MX 10.5 MX__AS… TRUE "Chetuma… 2023-12…
## # ℹ 12 more variables: spri <int>, tzname <chr>, iemid <int>,
## # archive_begin <chr>, metasite <lgl>, longitude <dbl>, latitude <dbl>,
## # wigos <chr>, state <chr>, archive_end <chr>, lon <dbl>, lat <dbl>
# PASO 3. Obtener información de la estación
monterrey <- riem_measures("MMMY", date_start = "2024-08-01", date_end = "2024-08-31")
# Análisis Descriptivo
summary(monterrey)
## station valid tmpf
## Length:725 Min. :2024-08-01 00:40:00 Min. : 71.60
## Class :character 1st Qu.:2024-08-08 11:40:00 1st Qu.: 77.00
## Mode :character Median :2024-08-15 23:44:00 Median : 82.40
## Mean :2024-08-15 23:33:43 Mean : 83.75
## 3rd Qu.:2024-08-23 11:40:00 3rd Qu.: 89.60
## Max. :2024-08-30 23:40:00 Max. :100.40
##
## dwpf relh drct sknt p01i
## Min. :53.60 Min. : 24.89 Min. : 0.00 Min. : 0.000 Min. :0
## 1st Qu.:68.00 1st Qu.: 49.36 1st Qu.: 70.00 1st Qu.: 4.000 1st Qu.:0
## Median :69.80 Median : 65.95 Median :100.00 Median : 6.000 Median :0
## Mean :69.66 Mean : 65.99 Mean : 94.58 Mean : 5.811 Mean :0
## 3rd Qu.:71.60 3rd Qu.: 83.44 3rd Qu.:120.00 3rd Qu.: 8.000 3rd Qu.:0
## Max. :75.20 Max. :100.00 Max. :340.00 Max. :16.000 Max. :0
##
## alti mslp vsby gust
## Min. :29.80 Min. : 987.8 Min. : 3.000 Min. :15.00
## 1st Qu.:29.99 1st Qu.:1013.6 1st Qu.: 8.000 1st Qu.:17.00
## Median :30.03 Median :1014.9 Median :10.000 Median :18.00
## Mean :30.02 Mean :1014.6 Mean : 9.611 Mean :18.86
## 3rd Qu.:30.07 3rd Qu.:1016.2 3rd Qu.:10.000 3rd Qu.:19.50
## Max. :30.18 Max. :1020.1 Max. :15.000 Max. :26.00
## NA's :485 NA's :718
## skyc1 skyc2 skyc3 skyc4
## Length:725 Length:725 Length:725 Mode:logical
## Class :character Class :character Class :character NA's:725
## Mode :character Mode :character Mode :character
##
##
##
##
## skyl1 skyl2 skyl3 skyl4
## Min. : 500 Min. : 800 Min. : 8000 Mode:logical
## 1st Qu.: 2000 1st Qu.: 7000 1st Qu.:20000 NA's:725
## Median : 3000 Median :10000 Median :20000
## Mean : 5513 Mean :12568 Mean :19600
## 3rd Qu.: 4500 3rd Qu.:20000 3rd Qu.:20000
## Max. :20000 Max. :20000 Max. :20000
## NA's :254 NA's :548 NA's :695
## wxcodes ice_accretion_1hr ice_accretion_3hr ice_accretion_6hr
## Length:725 Mode:logical Mode:logical Mode:logical
## Class :character NA's:725 NA's:725 NA's:725
## Mode :character
##
##
##
##
## peak_wind_gust peak_wind_drct peak_wind_time feel
## Mode:logical Mode:logical Mode:logical Min. : 71.60
## NA's:725 NA's:725 NA's:725 1st Qu.: 77.00
## Median : 87.18
## Mean : 86.33
## 3rd Qu.: 94.85
## Max. :102.50
##
## metar snowdepth
## Length:725 Mode:logical
## Class :character NA's:725
## Mode :character
##
##
##
##
str(monterrey)
## tibble [725 × 30] (S3: tbl_df/tbl/data.frame)
## $ station : chr [1:725] "MMMY" "MMMY" "MMMY" "MMMY" ...
## $ valid : POSIXct[1:725], format: "2024-08-01 00:40:00" "2024-08-01 01:40:00" ...
## $ tmpf : num [1:725] 87.8 86 82.4 80.6 78.8 77 77 77 77 75.2 ...
## $ dwpf : num [1:725] 66.2 64.4 68 73.4 73.4 73.4 73.4 73.4 73.4 73.4 ...
## $ relh : num [1:725] 48.8 48.6 61.8 78.8 83.5 ...
## $ drct : num [1:725] 150 130 130 90 100 90 90 90 100 80 ...
## $ sknt : num [1:725] 15 13 9 12 11 8 7 7 7 3 ...
## $ p01i : num [1:725] 0 0 0 0 0 0 0 0 0 0 ...
## $ alti : num [1:725] 30 30 30 30 30 ...
## $ mslp : num [1:725] NA NA 1014 NA NA ...
## $ vsby : num [1:725] 6 7 7 6 6 6 6 6 6 6 ...
## $ gust : num [1:725] NA NA NA NA NA NA NA NA NA NA ...
## $ skyc1 : chr [1:725] "CLR" "CLR" "CLR" "CLR" ...
## $ skyc2 : chr [1:725] NA NA NA NA ...
## $ skyc3 : chr [1:725] NA NA NA NA ...
## $ skyc4 : logi [1:725] NA NA NA NA NA NA ...
## $ skyl1 : num [1:725] NA NA NA NA NA NA 2000 1500 2000 2000 ...
## $ skyl2 : num [1:725] NA NA NA NA NA NA NA NA NA NA ...
## $ skyl3 : num [1:725] NA NA NA NA NA NA NA NA NA NA ...
## $ skyl4 : logi [1:725] NA NA NA NA NA NA ...
## $ wxcodes : chr [1:725] NA NA NA NA ...
## $ ice_accretion_1hr: logi [1:725] NA NA NA NA NA NA ...
## $ ice_accretion_3hr: logi [1:725] NA NA NA NA NA NA ...
## $ ice_accretion_6hr: logi [1:725] NA NA NA NA NA NA ...
## $ peak_wind_gust : logi [1:725] NA NA NA NA NA NA ...
## $ peak_wind_drct : logi [1:725] NA NA NA NA NA NA ...
## $ peak_wind_time : logi [1:725] NA NA NA NA NA NA ...
## $ feel : num [1:725] 90.3 87.5 85.4 85.3 78.8 ...
## $ metar : chr [1:725] "MMMY 010040Z 15015KT 6SM SKC 31/19 A2996 RMK HZY" "MMMY 010140Z 13013KT 7SM SKC 30/18 A2997 RMK HZY" "MMMY 010240Z 13009KT 7SM SKC 28/20 A3000 RMK SLP139 52013 914 HZY" "MMMY 010340Z 09012KT 6SM SKC 27/23 A3002 RMK HZY" ...
## $ snowdepth : logi [1:725] NA NA NA NA NA NA ...
# Filtrar información del último mes
mty_ago_24 <- subset(monterrey, valid >= as.POSIXct("2024-08-01 00:00") & valid <= as.POSIXct("2024-08-31 23:59"))
# Procesar datos para obtener promedio diario en Celsius
mty_daily <- mty_ago_24 %>%
mutate(date = as.Date(valid)) %>%
group_by(date) %>%
summarize(temp_c = mean((tmpf - 32) * 5/9, na.rm = TRUE))
# Inspección de datos
summary(mty_daily)
## date temp_c
## Min. :2024-08-01 Min. :27.00
## 1st Qu.:2024-08-08 1st Qu.:28.35
## Median :2024-08-15 Median :28.79
## Mean :2024-08-15 Mean :28.75
## 3rd Qu.:2024-08-22 3rd Qu.:29.03
## Max. :2024-08-30 Max. :30.67
head(mty_daily)
## # A tibble: 6 × 2
## date temp_c
## <date> <dbl>
## 1 2024-08-01 27.4
## 2 2024-08-02 27.3
## 3 2024-08-03 28.4
## 4 2024-08-04 28.7
## 5 2024-08-05 28.3
## 6 2024-08-06 28.9
tail(mty_daily)
## # A tibble: 6 × 2
## date temp_c
## <date> <dbl>
## 1 2024-08-25 28.8
## 2 2024-08-26 28.6
## 3 2024-08-27 28.8
## 4 2024-08-28 27.4
## 5 2024-08-29 27
## 6 2024-08-30 29.3
# Gráficas
ggplot(mty_daily, aes(x = date, y = temp_c)) +
geom_point()
ggplot(mty_daily, aes(x = date, y = temp_c)) +
geom_col()
ggplot(mty_daily, aes(x = date, y = temp_c)) +
geom_col(fill = "cyan") +
geom_point(color = "blue") +
labs(title = "Temperatura Promedio Diario en Monterrey (Agosto 2024)",
x = "DÃa",
y = "Temperatura (°C)")