#
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)
## Warning: package 'riem' was built under R version 4.4.3
#install.packages("tidyverse")
library(tidyverse)
## Warning: package 'tidyverse' was built under R version 4.4.3
## Warning: package 'ggplot2' was built under R version 4.4.3
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.4 ✔ readr 2.1.5
## ✔ forcats 1.0.0 ✔ stringr 1.5.1
## ✔ ggplot2 3.5.2 ✔ tibble 3.2.1
## ✔ lubridate 1.9.4 ✔ tidyr 1.3.1
## ✔ purrr 1.0.4
## ── 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)
# 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 = "2026-02-26")
# Análisis Descriptivo
summary(monterrey)
## station valid tmpf
## Length:23 Min. :2026-02-26 00:42:00.00 Min. : 60.80
## Class :character 1st Qu.:2026-02-26 06:10:00.00 1st Qu.: 67.10
## Mode :character Median :2026-02-26 11:40:00.00 Median : 77.00
## Mean :2026-02-26 11:40:10.43 Mean : 80.83
## 3rd Qu.:2026-02-26 17:10:00.00 3rd Qu.: 96.80
## Max. :2026-02-26 22:40:00.00 Max. :102.20
##
## dwpf relh drct sknt p01i
## Min. :30.20 Min. : 8.14 Min. : 0.0 Min. : 0.000 Min. :0
## 1st Qu.:32.00 1st Qu.:10.73 1st Qu.:100.0 1st Qu.: 3.500 1st Qu.:0
## Median :37.40 Median :21.77 Median :280.0 Median : 7.000 Median :0
## Mean :37.95 Mean :27.23 Mean :202.2 Mean : 6.739 Mean :0
## 3rd Qu.:43.70 3rd Qu.:41.16 3rd Qu.:300.0 3rd Qu.:10.000 3rd Qu.:0
## Max. :48.20 Max. :59.02 Max. :330.0 Max. :15.000 Max. :0
##
## alti mslp vsby gust skyc1
## Min. :29.71 Min. :1004 Min. : 8.00 Min. :14 Length:23
## 1st Qu.:29.75 1st Qu.:1006 1st Qu.:10.00 1st Qu.:14 Class :character
## Median :29.77 Median :1007 Median :10.00 Median :14 Mode :character
## Mean :29.77 Mean :1007 Mean :11.91 Mean :14
## 3rd Qu.:29.80 3rd Qu.:1008 3rd Qu.:15.00 3rd Qu.:14
## Max. :29.82 Max. :1008 Max. :15.00 Max. :14
## NA's :16 NA's :22
## skyc2 skyc3 skyc4 skyl1 skyl2
## Mode:logical Mode:logical Mode:logical Mode:logical Mode:logical
## NA's:23 NA's:23 NA's:23 NA's:23 NA's:23
##
##
##
##
##
## skyl3 skyl4 wxcodes ice_accretion_1hr
## Mode:logical Mode:logical Mode:logical Mode:logical
## NA's:23 NA's:23 NA's:23 NA's:23
##
##
##
##
##
## ice_accretion_3hr ice_accretion_6hr peak_wind_gust peak_wind_drct
## Mode:logical Mode:logical Mode:logical Mode:logical
## NA's:23 NA's:23 NA's:23 NA's:23
##
##
##
##
##
## peak_wind_time feel metar snowdepth
## Mode:logical Min. :60.80 Length:23 Mode:logical
## NA's:23 1st Qu.:67.10 Class :character NA's:23
## Median :77.00 Mode :character
## Mean :78.50
## 3rd Qu.:91.34
## Max. :95.76
##
str(monterrey)
## tibble [23 × 30] (S3: tbl_df/tbl/data.frame)
## $ station : chr [1:23] "MMMY" "MMMY" "MMMY" "MMMY" ...
## $ valid : POSIXct[1:23], format: "2026-02-26 00:42:00" "2026-02-26 01:40:00" ...
## $ tmpf : num [1:23] 89.6 84.2 77 73.4 69.8 68 66.2 66.2 62.6 60.8 ...
## $ dwpf : num [1:23] 39.2 37.4 37.4 39.2 42.8 44.6 46.4 48.2 46.4 46.4 ...
## $ relh : num [1:23] 17.1 18.9 23.9 29 37.6 ...
## $ drct : num [1:23] 130 50 130 100 100 0 0 0 300 290 ...
## $ sknt : num [1:23] 8 10 5 4 5 0 0 0 5 7 ...
## $ p01i : num [1:23] 0 0 0 0 0 0 0 0 0 0 ...
## $ alti : num [1:23] 29.7 29.7 29.8 29.8 29.8 ...
## $ mslp : num [1:23] NA NA 1007 NA NA ...
## $ vsby : num [1:23] 15 10 10 10 10 10 10 10 10 8 ...
## $ gust : num [1:23] NA NA NA NA NA NA NA NA NA NA ...
## $ skyc1 : chr [1:23] "CLR" "CLR" "CLR" "CLR" ...
## $ skyc2 : logi [1:23] NA NA NA NA NA NA ...
## $ skyc3 : logi [1:23] NA NA NA NA NA NA ...
## $ skyc4 : logi [1:23] NA NA NA NA NA NA ...
## $ skyl1 : logi [1:23] NA NA NA NA NA NA ...
## $ skyl2 : logi [1:23] NA NA NA NA NA NA ...
## $ skyl3 : logi [1:23] NA NA NA NA NA NA ...
## $ skyl4 : logi [1:23] NA NA NA NA NA NA ...
## $ wxcodes : logi [1:23] NA NA NA NA NA NA ...
## $ ice_accretion_1hr: logi [1:23] NA NA NA NA NA NA ...
## $ ice_accretion_3hr: logi [1:23] NA NA NA NA NA NA ...
## $ ice_accretion_6hr: logi [1:23] NA NA NA NA NA NA ...
## $ peak_wind_gust : logi [1:23] NA NA NA NA NA NA ...
## $ peak_wind_drct : logi [1:23] NA NA NA NA NA NA ...
## $ peak_wind_time : logi [1:23] NA NA NA NA NA NA ...
## $ feel : num [1:23] 85.7 81.4 77 73.4 69.8 ...
## $ metar : chr [1:23] "MMMY 260042Z 13008KT 15SM SKC 32/04 A2971" "MMMY 260140Z 05010KT 10SM SKC 29/03 A2973" "MMMY 260241Z 13005KT 10SM SKC 25/03 A2976 RMK SLP068 52027 992" "MMMY 260340Z 10004KT 10SM SKC 23/04 A2978" ...
## $ snowdepth : logi [1:23] 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"))
# Ejercicio 1: Realizar una gráfica de barras de la temperatura promedio
monterrey$temp_c <- (monterrey$tmpf - 32) * 5/9
monterrey$hora <- format(monterrey$valid, "%H:%M")
idx <- seq(1, length(monterrey$temp_c), length.out = 10)
barplot(monterrey$temp_c[idx],
names.arg = monterrey$hora[idx],
main = "Temperatura - Monterrey (25 Feb 2026)",
xlab = "Hora",
ylab = "Temperatura (°C)",
col = "steelblue",
las = 2)