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)
## ── 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)
# 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
SLP <- riem_measures("MMSP", date_start = "2026-01-01")
# Análisis Descriptivo
summary(SLP)
## station valid tmpf
## Length:1367 Min. :2026-01-01 00:46:00 Min. :30.20
## Class :character 1st Qu.:2026-01-15 03:18:00 1st Qu.:46.40
## Mode :character Median :2026-01-29 01:40:00 Median :55.40
## Mean :2026-01-29 01:49:02 Mean :57.05
## 3rd Qu.:2026-02-12 03:16:00 3rd Qu.:66.20
## Max. :2026-02-25 23:46:00 Max. :91.40
##
## dwpf relh drct sknt p01i
## Min. :-4.00 Min. : 2.64 Min. : 0.00 Min. : 0.000 Min. :0
## 1st Qu.:30.20 1st Qu.: 31.32 1st Qu.: 0.00 1st Qu.: 0.000 1st Qu.:0
## Median :35.60 Median : 50.63 Median : 70.00 Median : 4.000 Median :0
## Mean :35.03 Mean : 51.01 Mean : 98.82 Mean : 4.436 Mean :0
## 3rd Qu.:41.00 3rd Qu.: 70.67 3rd Qu.:175.00 3rd Qu.: 7.000 3rd Qu.:0
## Max. :59.00 Max. :100.00 Max. :360.00 Max. :24.000 Max. :0
##
## alti mslp vsby gust
## Min. :30.00 Min. :1001 Min. : 0.000 Min. :12.00
## 1st Qu.:30.21 1st Qu.:1011 1st Qu.: 7.000 1st Qu.:15.00
## Median :30.28 Median :1015 Median : 8.000 Median :17.50
## Mean :30.28 Mean :1015 Mean : 7.877 Mean :18.38
## 3rd Qu.:30.36 3rd Qu.:1020 3rd Qu.:10.000 3rd Qu.:21.00
## Max. :30.56 Max. :1031 Max. :12.000 Max. :30.00
## NA's :921 NA's :1341
## skyc1 skyc2 skyc3 skyc4
## Length:1367 Length:1367 Length:1367 Mode:logical
## Class :character Class :character Class :character NA's:1367
## Mode :character Mode :character Mode :character
##
##
##
##
## skyl1 skyl2 skyl3 skyl4
## Min. : 0 Min. : 700 Min. : 7000 Mode:logical
## 1st Qu.: 2000 1st Qu.: 2000 1st Qu.:21000 NA's:1367
## Median : 6000 Median :10000 Median :21000
## Mean :11099 Mean :13639 Mean :20282
## 3rd Qu.:23000 3rd Qu.:23000 3rd Qu.:25000
## Max. :25000 Max. :25000 Max. :25000
## NA's :529 NA's :1053 NA's :1328
## wxcodes ice_accretion_1hr ice_accretion_3hr ice_accretion_6hr
## Length:1367 Mode:logical Mode:logical Mode:logical
## Class :character NA's:1367 NA's:1367 NA's:1367
## Mode :character
##
##
##
##
## peak_wind_gust peak_wind_drct peak_wind_time feel
## Mode:logical Mode:logical Mode:logical Min. :24.26
## NA's:1367 NA's:1367 NA's:1367 1st Qu.:46.34
## Median :55.40
## Mean :56.39
## 3rd Qu.:66.20
## Max. :85.28
##
## metar snowdepth
## Length:1367 Mode:logical
## Class :character NA's:1367
## Mode :character
##
##
##
##
str(SLP)
## tibble [1,367 × 30] (S3: tbl_df/tbl/data.frame)
## $ station : chr [1:1367] "MMSP" "MMSP" "MMSP" "MMSP" ...
## $ valid : POSIXct[1:1367], format: "2026-01-01 00:46:00" "2026-01-01 01:52:00" ...
## $ tmpf : num [1:1367] 55.4 53.6 51.8 51.8 50 48.2 46.4 44.6 44.6 42.8 ...
## $ dwpf : num [1:1367] 42.8 42.8 42.8 42.8 42.8 41 41 41 41 37.4 ...
## $ relh : num [1:1367] 62.5 66.7 71.3 71.3 76.2 ...
## $ drct : num [1:1367] 30 0 0 0 0 0 0 0 0 0 ...
## $ sknt : num [1:1367] 3 0 0 0 0 0 0 0 0 0 ...
## $ p01i : num [1:1367] 0 0 0 0 0 0 0 0 0 0 ...
## $ alti : num [1:1367] 30.3 30.4 30.4 30.4 30.4 ...
## $ mslp : num [1:1367] NA NA 1022 NA NA ...
## $ vsby : num [1:1367] 8 8 8 8 7 7 6 4 4 3 ...
## $ gust : num [1:1367] NA NA NA NA NA NA NA NA NA NA ...
## $ skyc1 : chr [1:1367] "BKN" "SCT" "SCT" "FEW" ...
## $ skyc2 : chr [1:1367] NA NA NA NA ...
## $ skyc3 : chr [1:1367] NA NA NA NA ...
## $ skyc4 : logi [1:1367] NA NA NA NA NA NA ...
## $ skyl1 : num [1:1367] 25000 25000 25000 25000 23000 23000 23000 23000 23000 NA ...
## $ skyl2 : num [1:1367] NA NA NA NA NA NA NA NA NA NA ...
## $ skyl3 : num [1:1367] NA NA NA NA NA NA NA NA NA NA ...
## $ skyl4 : logi [1:1367] NA NA NA NA NA NA ...
## $ wxcodes : chr [1:1367] NA NA NA NA ...
## $ ice_accretion_1hr: logi [1:1367] NA NA NA NA NA NA ...
## $ ice_accretion_3hr: logi [1:1367] NA NA NA NA NA NA ...
## $ ice_accretion_6hr: logi [1:1367] NA NA NA NA NA NA ...
## $ peak_wind_gust : logi [1:1367] NA NA NA NA NA NA ...
## $ peak_wind_drct : logi [1:1367] NA NA NA NA NA NA ...
## $ peak_wind_time : logi [1:1367] NA NA NA NA NA NA ...
## $ feel : num [1:1367] 55.4 53.6 51.8 51.8 50 48.2 46.4 44.6 44.6 42.8 ...
## $ metar : chr [1:1367] "MMSP 010046Z 03003KT 8SM BKN250 13/06 A3033 RMK 8/008" "MMSP 010152Z 00000KT 8SM SCT250 12/06 A3035 RMK 8/001" "MMSP 010240Z 00000KT 8SM SCT250 11/06 A3036 RMK SLP215 52010 976 8/001" "MMSP 010348Z 00000KT 8SM FEW250 11/06 A3037 RMK 8/001" ...
## $ snowdepth : logi [1:1367] NA NA NA NA NA NA ...
# Filtrar información del último mes
mty_ago_24 <- subset(SLP, 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.
slp_enero_26 <- SLP %>%
mutate(fecha = as.Date(valid)) %>%
group_by(fecha) %>%
summarize(temp_promedio = mean((tmpf - 32) * 5 / 9, na.rm = TRUE))
ggplot(slp_enero_26, aes(x = fecha, y = temp_promedio)) +
geom_col(fill = "skyblue") +
labs(
title = "Temperatura Promedio Diario en SLP - Enero 2026",
x = "Fecha",
y = "Temperatura (°C)"
)