# 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 'ggplot2' was built under R version 4.4.3
## Warning: package 'dplyr' was built under R version 4.4.3
## Warning: package 'stringr' was built under R version 4.4.3
## Warning: package 'forcats' was built under R version 4.4.3
## Warning: package 'lubridate' 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 4.0.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:22 Min. :2026-02-26 00:42:00.00 Min. : 60.80
## Class :character 1st Qu.:2026-02-26 05:55:00.00 1st Qu.: 66.65
## Mode :character Median :2026-02-26 11:10:00.00 Median : 75.20
## Mean :2026-02-26 11:10:10.91 Mean : 79.95
## 3rd Qu.:2026-02-26 16:25:00.00 3rd Qu.: 93.65
## Max. :2026-02-26 21: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.45 1st Qu.:12.23 1st Qu.:100.0 1st Qu.: 4.250 1st Qu.:0
## Median :37.40 Median :22.86 Median :280.0 Median : 7.000 Median :0
## Mean :38.22 Mean :28.05 Mean :198.2 Mean : 6.955 Mean :0
## 3rd Qu.:44.15 3rd Qu.:42.01 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:22
## 1st Qu.:29.76 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 :15 NA's :21
## skyc2 skyc3 skyc4 skyl1 skyl2
## Mode:logical Mode:logical Mode:logical Mode:logical Mode:logical
## NA's:22 NA's:22 NA's:22 NA's:22 NA's:22
##
##
##
##
##
## skyl3 skyl4 wxcodes ice_accretion_1hr
## Mode:logical Mode:logical Mode:logical Mode:logical
## NA's:22 NA's:22 NA's:22 NA's:22
##
##
##
##
##
## ice_accretion_3hr ice_accretion_6hr peak_wind_gust peak_wind_drct
## Mode:logical Mode:logical Mode:logical Mode:logical
## NA's:22 NA's:22 NA's:22 NA's:22
##
##
##
##
##
## peak_wind_time feel metar snowdepth
## Mode:logical Min. :60.80 Length:22 Mode:logical
## NA's:22 1st Qu.:66.65 Class :character NA's:22
## Median :75.20 Mode :character
## Mean :77.78
## 3rd Qu.:88.92
## Max. :95.76
##
str(monterrey)
## tibble [22 × 30] (S3: tbl_df/tbl/data.frame)
## $ station : chr [1:22] "MMMY" "MMMY" "MMMY" "MMMY" ...
## $ valid : POSIXct[1:22], format: "2026-02-26 00:42:00" "2026-02-26 01:40:00" ...
## $ tmpf : num [1:22] 89.6 84.2 77 73.4 69.8 68 66.2 66.2 62.6 60.8 ...
## $ dwpf : num [1:22] 39.2 37.4 37.4 39.2 42.8 44.6 46.4 48.2 46.4 46.4 ...
## $ relh : num [1:22] 17.1 18.9 23.9 29 37.6 ...
## $ drct : num [1:22] 130 50 130 100 100 0 0 0 300 290 ...
## $ sknt : num [1:22] 8 10 5 4 5 0 0 0 5 7 ...
## $ p01i : num [1:22] 0 0 0 0 0 0 0 0 0 0 ...
## $ alti : num [1:22] 29.7 29.7 29.8 29.8 29.8 ...
## $ mslp : num [1:22] NA NA 1007 NA NA ...
## $ vsby : num [1:22] 15 10 10 10 10 10 10 10 10 8 ...
## $ gust : num [1:22] NA NA NA NA NA NA NA NA NA NA ...
## $ skyc1 : chr [1:22] "CLR" "CLR" "CLR" "CLR" ...
## $ skyc2 : logi [1:22] NA NA NA NA NA NA ...
## $ skyc3 : logi [1:22] NA NA NA NA NA NA ...
## $ skyc4 : logi [1:22] NA NA NA NA NA NA ...
## $ skyl1 : logi [1:22] NA NA NA NA NA NA ...
## $ skyl2 : logi [1:22] NA NA NA NA NA NA ...
## $ skyl3 : logi [1:22] NA NA NA NA NA NA ...
## $ skyl4 : logi [1:22] NA NA NA NA NA NA ...
## $ wxcodes : logi [1:22] NA NA NA NA NA NA ...
## $ ice_accretion_1hr: logi [1:22] NA NA NA NA NA NA ...
## $ ice_accretion_3hr: logi [1:22] NA NA NA NA NA NA ...
## $ ice_accretion_6hr: logi [1:22] NA NA NA NA NA NA ...
## $ peak_wind_gust : logi [1:22] NA NA NA NA NA NA ...
## $ peak_wind_drct : logi [1:22] NA NA NA NA NA NA ...
## $ peak_wind_time : logi [1:22] NA NA NA NA NA NA ...
## $ feel : num [1:22] 85.7 81.4 77 73.4 69.8 ...
## $ metar : chr [1:22] "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:22] 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 diario en agosto en Monterrey en °C.
monterrey <- riem_measures("MMMY",
date_start = "2025-03-01",
date_end = "2025-03-31")
colnames(monterrey)
## [1] "station" "valid" "tmpf"
## [4] "dwpf" "relh" "drct"
## [7] "sknt" "p01i" "alti"
## [10] "mslp" "vsby" "gust"
## [13] "skyc1" "skyc2" "skyc3"
## [16] "skyc4" "skyl1" "skyl2"
## [19] "skyl3" "skyl4" "wxcodes"
## [22] "ice_accretion_1hr" "ice_accretion_3hr" "ice_accretion_6hr"
## [25] "peak_wind_gust" "peak_wind_drct" "peak_wind_time"
## [28] "feel" "metar" "snowdepth"
# Convertir fecha
monterrey$fecha <- as.Date(monterrey$valid)
# Calcular temperatura promedio diaria
temp_prom_diaria <- monterrey %>%
group_by(fecha) %>%
summarise(
temperatura_promedio = mean(tmpf, na.rm = TRUE)
)
ggplot(temp_prom_diaria, aes(x = fecha, y = temperatura_promedio)) +
geom_col(fill = "orange") +
labs(
title = "Temperatura Promedio Diaria en Marzo 2025 - Monterrey",
x = "Fecha",
y = "Temperatura Promedio (°C)"
) +
theme_minimal() +
theme(
axis.text.x = element_text(angle = 45, hjust = 1)
)