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
morelia <- riem_measures("MMMM", date_start = "2026-01-01",
date_end = "2026-01-31")
# Análisis Descriptivo
summary(morelia)
## station valid tmpf
## Length:839 Min. :2026-01-01 00:40:00 Min. :33.80
## Class :character 1st Qu.:2026-01-08 12:18:30 1st Qu.:46.40
## Mode :character Median :2026-01-16 05:46:00 Median :55.40
## Mean :2026-01-16 01:40:28 Mean :56.74
## 3rd Qu.:2026-01-23 14:54:30 3rd Qu.:66.20
## Max. :2026-01-30 23:44:00 Max. :82.40
##
## dwpf relh drct sknt p01i
## Min. :32.00 Min. : 18.45 Min. : 0.0 Min. : 0.000 Min. :0
## 1st Qu.:41.00 1st Qu.: 47.72 1st Qu.: 0.0 1st Qu.: 0.000 1st Qu.:0
## Median :44.60 Median : 71.26 Median :140.0 Median : 3.000 Median :0
## Mean :44.24 Mean : 69.04 Mean :135.2 Mean : 2.669 Mean :0
## 3rd Qu.:48.20 3rd Qu.: 93.40 3rd Qu.:240.0 3rd Qu.: 4.000 3rd Qu.:0
## Max. :55.40 Max. :100.00 Max. :360.0 Max. :15.000 Max. :0
##
## alti mslp vsby gust skyc1
## Min. :30.10 Min. :1007 Min. :0.25 Min. :12 Length:839
## 1st Qu.:30.22 1st Qu.:1012 1st Qu.:6.00 1st Qu.:12 Class :character
## Median :30.27 Median :1014 Median :7.00 Median :12 Mode :character
## Mean :30.27 Mean :1014 Mean :6.73 Mean :12
## 3rd Qu.:30.31 3rd Qu.:1017 3rd Qu.:8.00 3rd Qu.:12
## Max. :30.47 Max. :1023 Max. :8.00 Max. :12
## NA's :599 NA's :838
## skyc2 skyc3 skyc4 skyl1
## Length:839 Length:839 Mode:logical Min. : 500
## Class :character Class :character NA's:839 1st Qu.: 3000
## Mode :character Mode :character Median : 7000
## Mean :13661
## 3rd Qu.:28000
## Max. :28000
## NA's :320
## skyl2 skyl3 skyl4 wxcodes
## Min. : 1500 Min. :25000 Mode:logical Length:839
## 1st Qu.: 9000 1st Qu.:28000 NA's:839 Class :character
## Median :10000 Median :28000 Mode :character
## Mean :17738 Mean :27710
## 3rd Qu.:28000 3rd Qu.:28000
## Max. :28000 Max. :28000
## NA's :650 NA's :808
## ice_accretion_1hr ice_accretion_3hr ice_accretion_6hr peak_wind_gust
## Mode:logical Mode:logical Mode:logical Mode:logical
## NA's:839 NA's:839 NA's:839 NA's:839
##
##
##
##
##
## peak_wind_drct peak_wind_time feel metar
## Mode:logical Mode:logical Min. :32.80 Length:839
## NA's:839 NA's:839 1st Qu.:45.15 Class :character
## Median :55.40 Mode :character
## Mean :56.47
## 3rd Qu.:66.20
## Max. :80.64
##
## snowdepth
## Mode:logical
## NA's:839
##
##
##
##
##
str(morelia)
## tibble [839 × 30] (S3: tbl_df/tbl/data.frame)
## $ station : chr [1:839] "MMMM" "MMMM" "MMMM" "MMMM" ...
## $ valid : POSIXct[1:839], format: "2026-01-01 00:40:00" "2026-01-01 01:40:00" ...
## $ tmpf : num [1:839] 60.8 55.4 55.4 48.2 46.4 42.8 42.8 41 41 39.2 ...
## $ dwpf : num [1:839] 46.4 44.6 44.6 42.8 42.8 41 41 41 41 39.2 ...
## $ relh : num [1:839] 59 66.9 66.9 81.5 87.2 ...
## $ drct : num [1:839] 340 0 0 0 110 0 180 0 0 0 ...
## $ sknt : num [1:839] 3 0 0 0 3 0 3 0 0 0 ...
## $ p01i : num [1:839] 0 0 0 0 0 0 0 0 0 0 ...
## $ alti : num [1:839] 30.3 30.3 30.3 30.4 30.4 ...
## $ mslp : num [1:839] NA NA 1018 NA NA ...
## $ vsby : num [1:839] 7 7 7 7 7 7 6 6 6 6 ...
## $ gust : num [1:839] NA NA NA NA NA NA NA NA NA NA ...
## $ skyc1 : chr [1:839] "FEW" "FEW" "CLR" "CLR" ...
## $ skyc2 : chr [1:839] "FEW" NA NA NA ...
## $ skyc3 : chr [1:839] NA NA NA NA ...
## $ skyc4 : logi [1:839] NA NA NA NA NA NA ...
## $ skyl1 : num [1:839] 3000 28000 NA NA NA NA NA NA NA NA ...
## $ skyl2 : num [1:839] 28000 NA NA NA NA NA NA NA NA NA ...
## $ skyl3 : num [1:839] NA NA NA NA NA NA NA NA NA NA ...
## $ skyl4 : logi [1:839] NA NA NA NA NA NA ...
## $ wxcodes : chr [1:839] NA NA NA NA ...
## $ ice_accretion_1hr: logi [1:839] NA NA NA NA NA NA ...
## $ ice_accretion_3hr: logi [1:839] NA NA NA NA NA NA ...
## $ ice_accretion_6hr: logi [1:839] NA NA NA NA NA NA ...
## $ peak_wind_gust : logi [1:839] NA NA NA NA NA NA ...
## $ peak_wind_drct : logi [1:839] NA NA NA NA NA NA ...
## $ peak_wind_time : logi [1:839] NA NA NA NA NA NA ...
## $ feel : num [1:839] 60.8 55.4 55.4 48.2 45.1 ...
## $ metar : chr [1:839] "MMMM 010040Z 34003KT 7SM FEW030 FEW280 16/08 A3029 RMK 8/502 HZY" "MMMM 010140Z 00000KT 7SM FEW280 13/07 A3032 RMK 8/002 HZY" "MMMM 010240Z 00000KT 7SM SKC 13/07 A3034 RMK SLP178 52008 951 HZY CI" "MMMM 010340Z 00000KT 7SM SKC 09/06 A3035 RMK HZY CI" ...
## $ snowdepth : logi [1:839] NA NA NA NA NA NA ...
# Filtrar información del último mes
mrl_ene_26 <- subset(morelia, valid >= as.POSIXct("2026-01-01 00:00") & valid <= as.POSIXct("2026-01-31 23:59"))
# Ejercicio 1: Realizar una gráfica de barras de la temperatura promedio diario del mes que hayan datos en Morelia en °C.
#convertir F a C
mrl_ene_26$temp_c <- (mrl_ene_26$tmpf - 32) * 5/9
#Obtener promedio
mrl_ene_26$fecha <- as.Date(mrl_ene_26$valid)
promedio_diario <- aggregate(temp_c ~ fecha,
data = mrl_ene_26,
FUN = mean,
na.rm = TRUE)
#Gráfica de barras (Base R)
barplot(promedio_diario$temp_c,
names.arg = promedio_diario$fecha,
col = "orange",
main = "Temperatura Promedio Diaria - Enero 2026\nMorelia (°C)",
xlab = "Fecha",
ylab = "Temperatura Promedio (°C)",
las = 2)
El mes de enero fue frio en su mayoria en la ciudad de Morelia
Los dias con temperaturas mas bajas son el 13, 12, 19 y 18.
El dia más calido fue el 4 de enero
Ningun dia supero los 16 C en promedio durante el mes de enero.