# 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)
# 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(
station = "MMMY",
date_start = "2024-08-01",
date_end = "2024-08-31"
)
# Análisis Descriptivo
summary(monterrey)
## station valid tmpf
## Length:725 Min. :2024-08-01 00:40:00 Min. : 71.60
## Class :character 1st Qu.:2024-08-08 11:40:00 1st Qu.: 77.00
## Mode :character Median :2024-08-15 23:44:00 Median : 82.40
## Mean :2024-08-15 23:33:43 Mean : 83.75
## 3rd Qu.:2024-08-23 11:40:00 3rd Qu.: 89.60
## Max. :2024-08-30 23:40:00 Max. :100.40
##
## dwpf relh drct sknt p01i
## Min. :53.60 Min. : 24.89 Min. : 0.00 Min. : 0.000 Min. :0
## 1st Qu.:68.00 1st Qu.: 49.36 1st Qu.: 70.00 1st Qu.: 4.000 1st Qu.:0
## Median :69.80 Median : 65.95 Median :100.00 Median : 6.000 Median :0
## Mean :69.66 Mean : 65.99 Mean : 94.58 Mean : 5.811 Mean :0
## 3rd Qu.:71.60 3rd Qu.: 83.44 3rd Qu.:120.00 3rd Qu.: 8.000 3rd Qu.:0
## Max. :75.20 Max. :100.00 Max. :340.00 Max. :16.000 Max. :0
##
## alti mslp vsby gust
## Min. :29.80 Min. : 987.8 Min. : 3.000 Min. :15.00
## 1st Qu.:29.99 1st Qu.:1013.6 1st Qu.: 8.000 1st Qu.:17.00
## Median :30.03 Median :1014.9 Median :10.000 Median :18.00
## Mean :30.02 Mean :1014.6 Mean : 9.611 Mean :18.86
## 3rd Qu.:30.07 3rd Qu.:1016.2 3rd Qu.:10.000 3rd Qu.:19.50
## Max. :30.18 Max. :1020.1 Max. :15.000 Max. :26.00
## NA's :485 NA's :718
## skyc1 skyc2 skyc3 skyc4
## Length:725 Length:725 Length:725 Mode:logical
## Class :character Class :character Class :character NA's:725
## Mode :character Mode :character Mode :character
##
##
##
##
## skyl1 skyl2 skyl3 skyl4
## Min. : 500 Min. : 800 Min. : 8000 Mode:logical
## 1st Qu.: 2000 1st Qu.: 7000 1st Qu.:20000 NA's:725
## Median : 3000 Median :10000 Median :20000
## Mean : 5513 Mean :12568 Mean :19600
## 3rd Qu.: 4500 3rd Qu.:20000 3rd Qu.:20000
## Max. :20000 Max. :20000 Max. :20000
## NA's :254 NA's :548 NA's :695
## wxcodes ice_accretion_1hr ice_accretion_3hr ice_accretion_6hr
## Length:725 Mode:logical Mode:logical Mode:logical
## Class :character NA's:725 NA's:725 NA's:725
## Mode :character
##
##
##
##
## peak_wind_gust peak_wind_drct peak_wind_time feel
## Mode:logical Mode:logical Mode:logical Min. : 71.60
## NA's:725 NA's:725 NA's:725 1st Qu.: 77.00
## Median : 87.18
## Mean : 86.33
## 3rd Qu.: 94.85
## Max. :102.50
##
## metar snowdepth
## Length:725 Mode:logical
## Class :character NA's:725
## Mode :character
##
##
##
##
str(monterrey)
## tibble [725 × 30] (S3: tbl_df/tbl/data.frame)
## $ station : chr [1:725] "MMMY" "MMMY" "MMMY" "MMMY" ...
## $ valid : POSIXct[1:725], format: "2024-08-01 00:40:00" "2024-08-01 01:40:00" ...
## $ tmpf : num [1:725] 87.8 86 82.4 80.6 78.8 77 77 77 77 75.2 ...
## $ dwpf : num [1:725] 66.2 64.4 68 73.4 73.4 73.4 73.4 73.4 73.4 73.4 ...
## $ relh : num [1:725] 48.8 48.6 61.8 78.8 83.5 ...
## $ drct : num [1:725] 150 130 130 90 100 90 90 90 100 80 ...
## $ sknt : num [1:725] 15 13 9 12 11 8 7 7 7 3 ...
## $ p01i : num [1:725] 0 0 0 0 0 0 0 0 0 0 ...
## $ alti : num [1:725] 30 30 30 30 30 ...
## $ mslp : num [1:725] NA NA 1014 NA NA ...
## $ vsby : num [1:725] 6 7 7 6 6 6 6 6 6 6 ...
## $ gust : num [1:725] NA NA NA NA NA NA NA NA NA NA ...
## $ skyc1 : chr [1:725] "CLR" "CLR" "CLR" "CLR" ...
## $ skyc2 : chr [1:725] NA NA NA NA ...
## $ skyc3 : chr [1:725] NA NA NA NA ...
## $ skyc4 : logi [1:725] NA NA NA NA NA NA ...
## $ skyl1 : num [1:725] NA NA NA NA NA NA 2000 1500 2000 2000 ...
## $ skyl2 : num [1:725] NA NA NA NA NA NA NA NA NA NA ...
## $ skyl3 : num [1:725] NA NA NA NA NA NA NA NA NA NA ...
## $ skyl4 : logi [1:725] NA NA NA NA NA NA ...
## $ wxcodes : chr [1:725] NA NA NA NA ...
## $ ice_accretion_1hr: logi [1:725] NA NA NA NA NA NA ...
## $ ice_accretion_3hr: logi [1:725] NA NA NA NA NA NA ...
## $ ice_accretion_6hr: logi [1:725] NA NA NA NA NA NA ...
## $ peak_wind_gust : logi [1:725] NA NA NA NA NA NA ...
## $ peak_wind_drct : logi [1:725] NA NA NA NA NA NA ...
## $ peak_wind_time : logi [1:725] NA NA NA NA NA NA ...
## $ feel : num [1:725] 90.3 87.5 85.4 85.3 78.8 ...
## $ metar : chr [1:725] "MMMY 010040Z 15015KT 6SM SKC 31/19 A2996 RMK HZY" "MMMY 010140Z 13013KT 7SM SKC 30/18 A2997 RMK HZY" "MMMY 010240Z 13009KT 7SM SKC 28/20 A3000 RMK SLP139 52013 914 HZY" "MMMY 010340Z 09012KT 6SM SKC 27/23 A3002 RMK HZY" ...
## $ snowdepth : logi [1:725] 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.
mty_ago_24 <- mty_ago_24 %>%
mutate(date = as.Date(valid),
temp_c = (tmpf - 32) * 5/9)
temp_diaria <- mty_ago_24 %>%
group_by(date) %>%
summarise(temp_prom_c = mean(temp_c, na.rm = TRUE), .groups = "drop")
ggplot(temp_diaria, aes(x = date, y = temp_prom_c)) +
geom_col(fill = "#FF1493") +
labs(
title = "Temperatura promedio diaria en Monterrey (Agosto 2024)",
x = "Fecha",
y = "Temperatura promedio (°C)"
) +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))