Introducción

Información obtenida del Automated Surface Observing System (ASOS) de los aeropuertos de todo el mundo.

Instalar paquetes y llamar librerías

#install.packages("riem")
library(riem)
# install.packages("tidyverse")
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.2.0     ✔ readr     2.1.6
## ✔ forcats   1.0.1     ✔ stringr   1.6.0
## ✔ ggplot2   4.0.2     ✔ tibble    3.3.1
## ✔ lubridate 1.9.5     ✔ tidyr     1.3.2
## ✔ purrr     1.2.1     
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
# install.packages("ggplot2")
library(ggplot2)
# install.packages("lubridate")
library(lubridate)

Obtener y graficar la información

# PASO 1. Buscar la red (país) - Ejemplo: México, y copiar CODE
#view(riem_networks())
# PASO 2. Buscar la estación (ciudad) - Ejemplo: Monterrey, y copiar ID
#view(riem_stations("MX__ASOS"))
# PASO 3. Obtener información de la estación
ciudad_victoria <- riem_measures("MMCV", date_start = "2026-01-01", date_end = "2026-01-31")
# Análisis Descriptivo
summary(ciudad_victoria)
##    station              valid                          tmpf      
##  Length:469         Min.   :2026-01-01 00:40:00   Min.   :32.00  
##  Class :character   1st Qu.:2026-01-08 19:40:00   1st Qu.:57.20  
##  Mode  :character   Median :2026-01-16 13:40:00   Median :66.20  
##                     Mean   :2026-01-16 08:02:00   Mean   :66.16  
##                     3rd Qu.:2026-01-23 18:40:00   3rd Qu.:75.20  
##                     Max.   :2026-01-30 23:40:00   Max.   :89.60  
##                                                                  
##       dwpf            relh             drct            sknt             p01i  
##  Min.   :19.40   Min.   : 19.73   Min.   :  0.0   Min.   : 0.000   Min.   :0  
##  1st Qu.:37.40   1st Qu.: 41.71   1st Qu.:130.0   1st Qu.: 4.000   1st Qu.:0  
##  Median :50.00   Median : 54.63   Median :180.0   Median : 6.000   Median :0  
##  Mean   :48.63   Mean   : 56.84   Mean   :198.7   Mean   : 6.603   Mean   :0  
##  3rd Qu.:60.80   3rd Qu.: 69.19   3rd Qu.:320.0   3rd Qu.: 9.000   3rd Qu.:0  
##  Max.   :68.00   Max.   :100.00   Max.   :360.0   Max.   :21.000   Max.   :0  
##                                                                               
##       alti            mslp           vsby             gust      
##  Min.   :29.67   Min.   :1004   Min.   : 0.000   Min.   :13.00  
##  1st Qu.:29.95   1st Qu.:1014   1st Qu.: 8.000   1st Qu.:18.00  
##  Median :30.11   Median :1019   Median :10.000   Median :20.00  
##  Mean   :30.12   Mean   :1020   Mean   : 8.705   Mean   :20.75  
##  3rd Qu.:30.28   3rd Qu.:1025   3rd Qu.:10.000   3rd Qu.:23.25  
##  Max.   :30.62   Max.   :1037   Max.   :12.000   Max.   :31.00  
##                  NA's   :308                     NA's   :381    
##     skyc1              skyc2              skyc3            skyc4        
##  Length:469         Length:469         Length:469         Mode:logical  
##  Class :character   Class :character   Class :character   NA's:469      
##  Mode  :character   Mode  :character   Mode  :character                 
##                                                                         
##                                                                         
##                                                                         
##                                                                         
##      skyl1           skyl2           skyl3        skyl4        
##  Min.   :  500   Min.   : 1000   Min.   :20000   Mode:logical  
##  1st Qu.: 2000   1st Qu.:10000   1st Qu.:20000   NA's:469      
##  Median : 7000   Median :20000   Median :20000                 
##  Mean   : 9193   Mean   :14550   Mean   :20000                 
##  3rd Qu.:20000   3rd Qu.:20000   3rd Qu.:20000                 
##  Max.   :25000   Max.   :25000   Max.   :20000                 
##  NA's   :90      NA's   :318     NA's   :464                   
##    wxcodes          ice_accretion_1hr ice_accretion_3hr ice_accretion_6hr
##  Length:469         Mode:logical      Mode:logical      Mode:logical     
##  Class :character   NA's:469          NA's:469          NA's:469         
##  Mode  :character                                                        
##                                                                          
##                                                                          
##                                                                          
##                                                                          
##  peak_wind_gust peak_wind_drct peak_wind_time      feel      
##  Mode:logical   Mode:logical   Mode:logical   Min.   :27.70  
##  NA's:469       NA's:469       NA's:469       1st Qu.:57.20  
##                                               Median :66.20  
##                                               Mean   :65.95  
##                                               3rd Qu.:75.20  
##                                               Max.   :91.47  
##                                                              
##     metar           snowdepth     
##  Length:469         Mode:logical  
##  Class :character   NA's:469      
##  Mode  :character                 
##                                   
##                                   
##                                   
## 
str(ciudad_victoria)
## tibble [469 × 30] (S3: tbl_df/tbl/data.frame)
##  $ station          : chr [1:469] "MMCV" "MMCV" "MMCV" "MMCV" ...
##  $ valid            : POSIXct[1:469], format: "2026-01-01 00:40:00" "2026-01-01 01:40:00" ...
##  $ tmpf             : num [1:469] 60.8 55.4 44.6 42.8 44.6 55.4 62.6 73.4 75.2 77 ...
##  $ dwpf             : num [1:469] 44.6 46.4 41 41 42.8 48.2 50 55.4 55.4 55.4 ...
##  $ relh             : num [1:469] 55.1 71.7 87.1 93.3 93.3 ...
##  $ drct             : num [1:469] 200 230 210 260 250 0 90 190 140 180 ...
##  $ sknt             : num [1:469] 5 4 3 3 4 0 4 8 12 10 ...
##  $ p01i             : num [1:469] 0 0 0 0 0 0 0 0 0 0 ...
##  $ alti             : num [1:469] 30.2 30.2 30.1 30.1 30.1 ...
##  $ mslp             : num [1:469] NA NA 1020 NA NA ...
##  $ vsby             : num [1:469] 10 10 5 7 10 10 10 10 10 10 ...
##  $ gust             : num [1:469] NA NA NA NA NA NA NA 20 22 NA ...
##  $ skyc1            : chr [1:469] "SCT" "SCT" "CLR" "SCT" ...
##  $ skyc2            : chr [1:469] NA NA NA NA ...
##  $ skyc3            : chr [1:469] NA NA NA NA ...
##  $ skyc4            : logi [1:469] NA NA NA NA NA NA ...
##  $ skyl1            : num [1:469] 20000 20000 NA 20000 10000 20000 20000 20000 20000 20000 ...
##  $ skyl2            : num [1:469] NA NA NA NA 20000 NA NA NA NA NA ...
##  $ skyl3            : num [1:469] NA NA NA NA NA NA NA NA NA NA ...
##  $ skyl4            : logi [1:469] NA NA NA NA NA NA ...
##  $ wxcodes          : chr [1:469] NA NA NA NA ...
##  $ ice_accretion_1hr: logi [1:469] NA NA NA NA NA NA ...
##  $ ice_accretion_3hr: logi [1:469] NA NA NA NA NA NA ...
##  $ ice_accretion_6hr: logi [1:469] NA NA NA NA NA NA ...
##  $ peak_wind_gust   : logi [1:469] NA NA NA NA NA NA ...
##  $ peak_wind_drct   : logi [1:469] NA NA NA NA NA NA ...
##  $ peak_wind_time   : logi [1:469] NA NA NA NA NA NA ...
##  $ feel             : num [1:469] 60.8 55.4 43.1 41 42.1 ...
##  $ metar            : chr [1:469] "MMCV 010040Z 20005KT 10SM SCT200 16/07 A3020 RMK 8/002" "MMCV 010140Z 23004KT 10SM SCT200 13/08 A3020 RMK 8/002" "MMCV 011156Z 21003KT 5SM SKC 07/05 A3013 RMK SLP199 57006 994 RTS" "MMCV 011241Z 26003KT 7SM SCT200 06/05 A3014 RMK 8/002 ISOL AS" ...
##  $ snowdepth        : logi [1:469] NA NA NA NA NA NA ...
# Filtrar información del último mes
CDV_ene_26 <- subset(ciudad_victoria, valid >= as.POSIXct("2024-08-01 00:00") &
valid <= as.POSIXct("2024-08-31 23:59"))
# Ejercicio 1: Realizar una gráfica de barras de la temperatura promedio diario en agosto en Monterrey en °C.
ciudad_victoria$temp_c <- (ciudad_victoria$tmpf - 32) * 5/9
ciudad_victoria$hora <- format(ciudad_victoria$valid, "%H:00")

# Promedio por hora
temp_hora <- aggregate(temp_c ~ hora, data = ciudad_victoria, FUN = mean, na.rm = TRUE)

barplot(temp_hora$temp_c,
        names.arg = temp_hora$hora,
        main = "Temperatura Promedio por Hora - Ciudad Victoria Enero 2026",
        xlab = "Hora",
        ylab = "Temperatura (°C)",
        col = "gray",
        las = 2)

Conclusión

Durante enero de 2026, Ciudad Victoria presentó temperaturas mínimas alrededor de los 12°C entre las 11:00 y 13:00 horas, y máximas de aproximadamente 24°C entre las 17:00 y 21:00 horas, lo que refleja una amplitud térmica de cerca de 12°C típica de los meses de invierno en la región. El patrón muestra un calentamiento progresivo a lo largo del día conforme el sol calienta la superficie, alcanzando su pico por la tarde antes de comenzar a descender por la noche. Cabe destacar que la estación no registró datos entre las 03:00 y 10:00 horas, por lo que el comportamiento en ese intervalo no puede analizarse.