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
monterrey <- riem_measures("MMMY", date_start = "2024-01-01")
# Análisis Descriptivo
summary(monterrey)
## station valid tmpf
## Length:19549 Min. :2024-01-01 00:40:00 Min. : 24.80
## Class :character 1st Qu.:2024-07-14 05:40:00 1st Qu.: 64.40
## Mode :character Median :2025-01-26 14:40:00 Median : 75.20
## Mean :2025-01-27 09:51:56 Mean : 73.16
## 3rd Qu.:2025-08-12 00:40: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.:51.80 1st Qu.: 49.21 1st Qu.: 70.0 1st Qu.: 3.000 1st Qu.:0
## Median :62.60 Median : 69.77 Median :110.0 Median : 6.000 Median :0
## Mean :59.04 Mean : 66.60 Mean :130.1 Mean : 5.754 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 :21.00
## Mean :30.01 Mean :1015.9 Mean : 7.894 Mean :22.22
## 3rd Qu.:30.10 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 :14445 NA's :1 NA's :18700
## skyc1 skyc2 skyc3 skyc4
## Length:19549 Length:19549 Length:19549 Length:19549
## 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.:16750
## Median : 2500 Median : 7000 Median :20000 Median :20000
## Mean : 4869 Mean : 7778 Mean :15271 Mean :16750
## 3rd Qu.: 7000 3rd Qu.:10000 3rd Qu.:20000 3rd Qu.:20000
## Max. :20000 Max. :25000 Max. :20000 Max. :20000
## NA's :6557 NA's :13561 NA's :18872 NA's :19545
## wxcodes ice_accretion_1hr ice_accretion_3hr ice_accretion_6hr
## Length:19549 Mode:logical Mode:logical Mode:logical
## Class :character NA's:19549 NA's:19549 NA's:19549
## Mode :character
##
##
##
##
## peak_wind_gust peak_wind_drct peak_wind_time feel
## Mode:logical Mode:logical Mode:logical Min. : 15.36
## NA's:19549 NA's:19549 NA's:19549 1st Qu.: 64.40
## Median : 75.20
## Mean : 73.95
## 3rd Qu.: 84.58
## Max. :117.24
## NA's :2
## metar snowdepth
## Length:19549 Mode:logical
## Class :character NA's:19549
## Mode :character
##
##
##
##
str(monterrey)
## tibble [19,549 × 30] (S3: tbl_df/tbl/data.frame)
## $ station : chr [1:19549] "MMMY" "MMMY" "MMMY" "MMMY" ...
## $ valid : POSIXct[1:19549], format: "2024-01-01 00:40:00" "2024-01-01 01:40:00" ...
## $ tmpf : num [1:19549] 68 66.2 62.6 60.8 59 57.2 55.4 55.4 55.4 53.6 ...
## $ dwpf : num [1:19549] 44.6 46.4 50 48.2 50 48.2 46.4 46.4 44.6 44.6 ...
## $ relh : num [1:19549] 42.9 48.8 63.4 63.1 72 ...
## $ drct : num [1:19549] 120 50 320 290 280 320 290 300 290 270 ...
## $ sknt : num [1:19549] 4 4 3 6 6 5 6 8 6 4 ...
## $ p01i : num [1:19549] 0 0 0 0 0 0 0 0 0 0 ...
## $ alti : num [1:19549] 30 30 30.1 30.1 30.1 ...
## $ mslp : num [1:19549] NA NA NA NA NA NA NA NA NA NA ...
## $ vsby : num [1:19549] 10 10 10 10 10 10 10 10 10 8 ...
## $ gust : num [1:19549] NA NA NA NA NA NA NA NA NA NA ...
## $ skyc1 : chr [1:19549] "SCT" "FEW" "FEW" "FEW" ...
## $ skyc2 : chr [1:19549] NA NA NA NA ...
## $ skyc3 : chr [1:19549] NA NA NA NA ...
## $ skyc4 : chr [1:19549] NA NA NA NA ...
## $ skyl1 : num [1:19549] 20000 20000 20000 20000 20000 NA NA NA NA NA ...
## $ skyl2 : num [1:19549] NA NA NA NA NA NA NA NA NA NA ...
## $ skyl3 : num [1:19549] NA NA NA NA NA NA NA NA NA NA ...
## $ skyl4 : num [1:19549] NA NA NA NA NA NA NA NA NA NA ...
## $ wxcodes : chr [1:19549] NA NA NA NA ...
## $ ice_accretion_1hr: logi [1:19549] NA NA NA NA NA NA ...
## $ ice_accretion_3hr: logi [1:19549] NA NA NA NA NA NA ...
## $ ice_accretion_6hr: logi [1:19549] NA NA NA NA NA NA ...
## $ peak_wind_gust : logi [1:19549] NA NA NA NA NA NA ...
## $ peak_wind_drct : logi [1:19549] NA NA NA NA NA NA ...
## $ peak_wind_time : logi [1:19549] NA NA NA NA NA NA ...
## $ feel : num [1:19549] 68 66.2 62.6 60.8 59 57.2 55.4 55.4 55.4 53.6 ...
## $ metar : chr [1:19549] "MMMY 010040Z 12004KT 10SM SCT200 20/07 A3002 RMK 8/008" "MMMY 010140Z 05004KT 10SM FEW200 19/08 A3004 RMK 8/008" "MMMY 010240Z 32003KT 10SM FEW200 17/10 A3005 RMK SLP/// 5//// 9// 8/008" "MMMY 010340Z 29006KT 10SM FEW200 16/09 A3006 RMK 8/008" ...
## $ snowdepth : logi [1:19549] NA NA NA NA NA NA ...
# Filtrar información de enero 2024
mty_ene_24 <- subset(monterrey, valid >= as.POSIXct("2024-01-01 00:00") & valid <= as.POSIXct("2024-01-31 23:59"))
# Ejercicio 1: Realizar una gráfica de barras de la temperatura promedio diario en enero en Monterrey en °C.
# 1. Convertir a °C
mty_ene_24$temp_c <- (mty_ene_24$tmpf - 32) * 5/9
# 2. Calcular promedio diario
prom <- aggregate(temp_c ~ as.Date(valid), data = mty_ene_24, mean)
colnames(prom) <- c("fecha", "temp_prom")
# 3. Graficar usando los nuevos nombres de columna
barplot(prom$temp_prom,
names.arg = prom$fecha,
las = 2,
col = "yellow",
main = "Temperatura promedio diaria (°C) - Enero 2024",
cex.names = 0.6)