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
monterrey <- riem_measures("MMMY", date_start= "2023-12-04")

# Análisis Descriptivo
summary(monterrey)
##    station              valid                          tmpf       
##  Length:20248       Min.   :2023-12-04 00:40:00   Min.   : 24.80  
##  Class :character   1st Qu.:2024-06-23 13:52:45   1st Qu.: 64.40  
##  Mode  :character   Median :2025-01-12 07:10:00   Median : 73.40  
##                     Mean   :2025-01-13 09:00:27   Mean   : 72.72  
##                     3rd Qu.:2025-08-04 21:55:00   3rd Qu.: 82.40  
##                     Max.   :2026-02-25 23:40:00   Max.   :111.20  
##                                                   NA's   :2       
##       dwpf            relh             drct            sknt             p01i  
##  Min.   :-0.40   Min.   :  3.92   Min.   :  0.0   Min.   : 0.000   Min.   :0  
##  1st Qu.:50.00   1st Qu.: 49.36   1st Qu.: 70.0   1st Qu.: 3.000   1st Qu.:0  
##  Median :62.60   Median : 69.97   Median :110.0   Median : 6.000   Median :0  
##  Mean   :58.78   Mean   : 66.91   Mean   :130.7   Mean   : 5.722   Mean   :0  
##  3rd Qu.:69.80   3rd Qu.: 88.00   3rd Qu.:160.0   3rd Qu.: 8.000   3rd Qu.:0  
##  Max.   :84.20   Max.   :100.00   Max.   :360.0   Max.   :33.000   Max.   :0  
##  NA's   :2       NA's   :2        NA's   :4                                   
##       alti            mslp             vsby             gust      
##  Min.   :29.44   Min.   : 929.8   Min.   : 0.000   Min.   :12.00  
##  1st Qu.:29.90   1st Qu.:1012.1   1st Qu.: 5.000   1st Qu.:18.00  
##  Median :30.00   Median :1015.0   Median : 8.000   Median :22.00  
##  Mean   :30.01   Mean   :1015.9   Mean   : 7.902   Mean   :22.26  
##  3rd Qu.:30.11   3rd Qu.:1018.8   3rd Qu.:10.000   3rd Qu.:25.00  
##  Max.   :30.73   Max.   :1101.0   Max.   :15.000   Max.   :48.00  
##  NA's   :2       NA's   :15144    NA's   :1        NA's   :19381  
##     skyc1              skyc2              skyc3              skyc4          
##  Length:20248       Length:20248       Length:20248       Length:20248      
##  Class :character   Class :character   Class :character   Class :character  
##  Mode  :character   Mode  :character   Mode  :character   Mode  :character  
##                                                                             
##                                                                             
##                                                                             
##                                                                             
##      skyl1           skyl2           skyl3           skyl4      
##  Min.   :    0   Min.   :  400   Min.   : 1000   Min.   : 7000  
##  1st Qu.: 1500   1st Qu.: 1500   1st Qu.: 7000   1st Qu.:20000  
##  Median : 2500   Median : 7000   Median :20000   Median :20000  
##  Mean   : 4869   Mean   : 7765   Mean   :14928   Mean   :17400  
##  3rd Qu.: 7000   3rd Qu.:10000   3rd Qu.:20000   3rd Qu.:20000  
##  Max.   :20000   Max.   :25000   Max.   :20000   Max.   :20000  
##  NA's   :6780    NA's   :13993   NA's   :19521   NA's   :20243  
##    wxcodes          ice_accretion_1hr ice_accretion_3hr ice_accretion_6hr
##  Length:20248       Mode:logical      Mode:logical      Mode:logical     
##  Class :character   NA's:20248        NA's:20248        NA's:20248       
##  Mode  :character                                                        
##                                                                          
##                                                                          
##                                                                          
##                                                                          
##  peak_wind_gust peak_wind_drct peak_wind_time      feel       
##  Mode:logical   Mode:logical   Mode:logical   Min.   : 15.36  
##  NA's:20248     NA's:20248     NA's:20248     1st Qu.: 64.40  
##                                               Median : 73.40  
##                                               Mean   : 73.48  
##                                               3rd Qu.: 84.53  
##                                               Max.   :117.24  
##                                               NA's   :2       
##     metar           snowdepth     
##  Length:20248       Mode:logical  
##  Class :character   NA's:20248    
##  Mode  :character                 
##                                   
##                                   
##                                   
## 
str(monterrey)
## tibble [20,248 × 30] (S3: tbl_df/tbl/data.frame)
##  $ station          : chr [1:20248] "MMMY" "MMMY" "MMMY" "MMMY" ...
##  $ valid            : POSIXct[1:20248], format: "2023-12-04 00:40:00" "2023-12-04 01:40:00" ...
##  $ tmpf             : num [1:20248] 62.6 62.6 60.8 60.8 60.8 59 57.2 57.2 55.4 57.2 ...
##  $ dwpf             : num [1:20248] 59 57.2 57.2 57.2 55.4 53.6 53.6 53.6 53.6 53.6 ...
##  $ relh             : num [1:20248] 88 82.5 87.9 87.9 82.4 ...
##  $ drct             : num [1:20248] 0 0 40 0 0 0 320 310 300 300 ...
##  $ sknt             : num [1:20248] 0 0 3 0 0 0 4 7 6 8 ...
##  $ p01i             : num [1:20248] 0 0 0 0 0 0 0 0 0 0 ...
##  $ alti             : num [1:20248] 30.1 30.1 30.1 30.1 30.1 ...
##  $ mslp             : num [1:20248] NA NA NA NA NA NA NA NA NA NA ...
##  $ vsby             : num [1:20248] 7 7 7 8 8 8 8 8 8 8 ...
##  $ gust             : num [1:20248] NA NA NA NA NA NA NA NA NA NA ...
##  $ skyc1            : chr [1:20248] "SCT" "SCT" "FEW" "BKN" ...
##  $ skyc2            : chr [1:20248] "OVC" "SCT" NA "OVC" ...
##  $ skyc3            : chr [1:20248] NA NA NA NA ...
##  $ skyc4            : chr [1:20248] NA NA NA NA ...
##  $ skyl1            : num [1:20248] 7000 7000 10000 8000 10000 20000 20000 20000 20000 20000 ...
##  $ skyl2            : num [1:20248] 10000 10000 NA 20000 20000 NA NA NA NA NA ...
##  $ skyl3            : num [1:20248] NA NA NA NA NA NA NA NA NA NA ...
##  $ skyl4            : num [1:20248] NA NA NA NA NA NA NA NA NA NA ...
##  $ wxcodes          : chr [1:20248] NA NA NA NA ...
##  $ ice_accretion_1hr: logi [1:20248] NA NA NA NA NA NA ...
##  $ ice_accretion_3hr: logi [1:20248] NA NA NA NA NA NA ...
##  $ ice_accretion_6hr: logi [1:20248] NA NA NA NA NA NA ...
##  $ peak_wind_gust   : logi [1:20248] NA NA NA NA NA NA ...
##  $ peak_wind_drct   : logi [1:20248] NA NA NA NA NA NA ...
##  $ peak_wind_time   : logi [1:20248] NA NA NA NA NA NA ...
##  $ feel             : num [1:20248] 62.6 62.6 60.8 60.8 60.8 59 57.2 57.2 55.4 57.2 ...
##  $ metar            : chr [1:20248] "MMMY 040040Z 00000KT 7SM SCT070 OVC100 17/15 A3007 RMK 8/07/" "MMMY 040140Z 00000KT 7SM SCT070 SCT100 17/14 A3009 RMK 8/070" "MMMY 040240Z 04003KT 7SM FEW100 16/14 A3009 RMK SLP/// 5//// 9// 8/070" "MMMY 040340Z 00000KT 8SM BKN080 OVC200 16/14 A3009 RMK 8/077" ...
##  $ snowdepth        : logi [1:20248] NA NA NA NA NA NA ...
# Filtrar información del último mes
mty_dic <- subset(monterrey, valid >= as.POSIXct("2023-12-04 00:00") &
valid <= as.POSIXct("2024-01-04 23:59"))

# Ejercicio 1: Realizar una gráfica de barras de la temperatura promedio
#diario en agosto en Monterrey en °C.
# Ejercicio 1: Realizar una gráfica de barras de la temperatura promedio
#diario en agosto en Monterrey en °C.

mty_dic$tmpc <- (mty_dic$tmpf - 32) * 5/9
mty_dic$fecha <- as.Date(mty_dic$valid)

promedio_mes <- aggregate(tmpc ~ fecha, data = mty_dic, mean)

ggplot(promedio_mes, aes(x = fecha, y = tmpc)) +
  geom_col()

LS0tCnRpdGxlOiAiQVNPUyIKYXV0aG9yOiAiR2l1bGlhbmEgTWFuY2VyYSBGbG9yZXMgLSBBMDA4NDA0MTYiCmRhdGU6ICIyNi4wMi4yMDI2IgpvdXRwdXQ6CiAgaHRtbF9kb2N1bWVudDoKICAgIHRvYzogVFJVRQogICAgdG9jX2Zsb2F0OiBUUlVFCiAgICBjb2RlX2Rvd25sb2FkOiBUUlVFCiAgICB0aGVtZTogZGFya2x5Ci0tLQo8Y2VudGVyPgohW10oaHR0cHM6Ly9ydXRhLnlwZi5jb20vaW1hZ2VzL2FydGljbGVzL25vdGEtNDAvbG8tcXVlLXRlbmVzLXF1ZS1zYWJlci1zb2JyZS1lbC1pbmRpY2Fkb3ItZGUtdGVtcGVyYXR1cmEtZGVsLW1vdG9yLmpwZykKPC9jZW50ZXI+CgojIDxzcGFuIHN0eWxlPSJjb2xvcjogeWVsbG93OyI+SW50cm9kdWNjacOzbjwvc3Bhbj4KSW5mb3JtYWNpw7NuIG9idGVuaWRhIGRlbCAqQXV0b21hdGVkIFN1cmZhY2UgT2JzZXJ2aW5nIFN5c3RlbSAoQVNPUykqIGRlCmxvcyBhZXJvcHVlcnRvcyBkZSB0b2RvIGVsIG11bmRvLgojIDxzcGFuIHN0eWxlPSJjb2xvcjogeWVsbG93OyI+SW5zdGFsYXIgcGFxdWV0ZXMgeSBsbGFtYXIgbGlicmVyw61hczwvc3Bhbj4KYGBge3J9CiNpbnN0YWxsLnBhY2thZ2VzKCJyaWVtIikKbGlicmFyeShyaWVtKQojaW5zdGFsbC5wYWNrYWdlcygidGlkeXZlcnNlIikKbGlicmFyeSh0aWR5dmVyc2UpCiNpbnN0YWxsLnBhY2thZ2VzKCJnZ3Bsb3QyIikKbGlicmFyeShnZ3Bsb3QyKQojaW5zdGFsbC5wYWNrYWdlcygibHVicmlkYXRlIikKbGlicmFyeShsdWJyaWRhdGUpCmBgYAojIDxzcGFuIHN0eWxlPSJjb2xvcjogeWVsbG93OyI+T2J0ZW5lciB5IGdyYWZpY2FyIGxhIGluZm9ybWFjacOzbjwvc3Bhbj4KYGBge3J9CiMgUEFTTyAxLiBCdXNjYXIgbGEgcmVkIChwYcOtcykgLSBFamVtcGxvOiBNw6l4aWNvLCB5IGNvcGlhciBDT0RFCiN2aWV3KHJpZW1fbmV0d29ya3MoKSkKIyBQQVNPIDIuIEJ1c2NhciBsYSBlc3RhY2nDs24gKGNpdWRhZCkgLSBFamVtcGxvOiBNb250ZXJyZXksIHkgY29waWFyIElECiN2aWV3KHJpZW1fc3RhdGlvbnMoIk1YX19BU09TIikpCiMgUEFTTyAzLiBPYnRlbmVyIGluZm9ybWFjacOzbiBkZSBsYSBlc3RhY2nDs24KbW9udGVycmV5IDwtIHJpZW1fbWVhc3VyZXMoIk1NTVkiLCBkYXRlX3N0YXJ0PSAiMjAyMy0xMi0wNCIpCgojIEFuw6FsaXNpcyBEZXNjcmlwdGl2bwpzdW1tYXJ5KG1vbnRlcnJleSkKc3RyKG1vbnRlcnJleSkKIyBGaWx0cmFyIGluZm9ybWFjacOzbiBkZWwgw7psdGltbyBtZXMKbXR5X2RpYyA8LSBzdWJzZXQobW9udGVycmV5LCB2YWxpZCA+PSBhcy5QT1NJWGN0KCIyMDIzLTEyLTA0IDAwOjAwIikgJgp2YWxpZCA8PSBhcy5QT1NJWGN0KCIyMDI0LTAxLTA0IDIzOjU5IikpCgojIEVqZXJjaWNpbyAxOiBSZWFsaXphciB1bmEgZ3LDoWZpY2EgZGUgYmFycmFzIGRlIGxhIHRlbXBlcmF0dXJhIHByb21lZGlvCiNkaWFyaW8gZW4gYWdvc3RvIGVuIE1vbnRlcnJleSBlbiDCsEMuCmBgYAoKCmBgYHtyfQojIEVqZXJjaWNpbyAxOiBSZWFsaXphciB1bmEgZ3LDoWZpY2EgZGUgYmFycmFzIGRlIGxhIHRlbXBlcmF0dXJhIHByb21lZGlvCiNkaWFyaW8gZW4gYWdvc3RvIGVuIE1vbnRlcnJleSBlbiDCsEMuCgptdHlfZGljJHRtcGMgPC0gKG10eV9kaWMkdG1wZiAtIDMyKSAqIDUvOQptdHlfZGljJGZlY2hhIDwtIGFzLkRhdGUobXR5X2RpYyR2YWxpZCkKCnByb21lZGlvX21lcyA8LSBhZ2dyZWdhdGUodG1wYyB+IGZlY2hhLCBkYXRhID0gbXR5X2RpYywgbWVhbikKCmdncGxvdChwcm9tZWRpb19tZXMsIGFlcyh4ID0gZmVjaGEsIHkgPSB0bXBjKSkgKwogIGdlb21fY29sKCkKYGBgCg==