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("MMMY", date_start= "2023-12-04")
# Análisis Descriptivo
summary(monterrey)
## station valid tmpf
## Length:20248 Min. :2023-12-04 00:40:00 Min. : 24.80
## Class :character 1st Qu.:2024-06-23 13:52:45 1st Qu.: 64.40
## Mode :character Median :2025-01-12 07:10:00 Median : 73.40
## Mean :2025-01-13 09:00:27 Mean : 72.72
## 3rd Qu.:2025-08-04 21:55: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.:50.00 1st Qu.: 49.36 1st Qu.: 70.0 1st Qu.: 3.000 1st Qu.:0
## Median :62.60 Median : 69.97 Median :110.0 Median : 6.000 Median :0
## Mean :58.78 Mean : 66.91 Mean :130.7 Mean : 5.722 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 :22.00
## Mean :30.01 Mean :1015.9 Mean : 7.902 Mean :22.26
## 3rd Qu.:30.11 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 :15144 NA's :1 NA's :19381
## skyc1 skyc2 skyc3 skyc4
## Length:20248 Length:20248 Length:20248 Length:20248
## 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.:20000
## Median : 2500 Median : 7000 Median :20000 Median :20000
## Mean : 4869 Mean : 7765 Mean :14928 Mean :17400
## 3rd Qu.: 7000 3rd Qu.:10000 3rd Qu.:20000 3rd Qu.:20000
## Max. :20000 Max. :25000 Max. :20000 Max. :20000
## NA's :6780 NA's :13993 NA's :19521 NA's :20243
## wxcodes ice_accretion_1hr ice_accretion_3hr ice_accretion_6hr
## Length:20248 Mode:logical Mode:logical Mode:logical
## Class :character NA's:20248 NA's:20248 NA's:20248
## Mode :character
##
##
##
##
## peak_wind_gust peak_wind_drct peak_wind_time feel
## Mode:logical Mode:logical Mode:logical Min. : 15.36
## NA's:20248 NA's:20248 NA's:20248 1st Qu.: 64.40
## Median : 73.40
## Mean : 73.48
## 3rd Qu.: 84.53
## Max. :117.24
## NA's :2
## metar snowdepth
## Length:20248 Mode:logical
## Class :character NA's:20248
## Mode :character
##
##
##
##
str(monterrey)
## tibble [20,248 × 30] (S3: tbl_df/tbl/data.frame)
## $ station : chr [1:20248] "MMMY" "MMMY" "MMMY" "MMMY" ...
## $ valid : POSIXct[1:20248], format: "2023-12-04 00:40:00" "2023-12-04 01:40:00" ...
## $ tmpf : num [1:20248] 62.6 62.6 60.8 60.8 60.8 59 57.2 57.2 55.4 57.2 ...
## $ dwpf : num [1:20248] 59 57.2 57.2 57.2 55.4 53.6 53.6 53.6 53.6 53.6 ...
## $ relh : num [1:20248] 88 82.5 87.9 87.9 82.4 ...
## $ drct : num [1:20248] 0 0 40 0 0 0 320 310 300 300 ...
## $ sknt : num [1:20248] 0 0 3 0 0 0 4 7 6 8 ...
## $ p01i : num [1:20248] 0 0 0 0 0 0 0 0 0 0 ...
## $ alti : num [1:20248] 30.1 30.1 30.1 30.1 30.1 ...
## $ mslp : num [1:20248] NA NA NA NA NA NA NA NA NA NA ...
## $ vsby : num [1:20248] 7 7 7 8 8 8 8 8 8 8 ...
## $ gust : num [1:20248] NA NA NA NA NA NA NA NA NA NA ...
## $ skyc1 : chr [1:20248] "SCT" "SCT" "FEW" "BKN" ...
## $ skyc2 : chr [1:20248] "OVC" "SCT" NA "OVC" ...
## $ skyc3 : chr [1:20248] NA NA NA NA ...
## $ skyc4 : chr [1:20248] NA NA NA NA ...
## $ skyl1 : num [1:20248] 7000 7000 10000 8000 10000 20000 20000 20000 20000 20000 ...
## $ skyl2 : num [1:20248] 10000 10000 NA 20000 20000 NA NA NA NA NA ...
## $ skyl3 : num [1:20248] NA NA NA NA NA NA NA NA NA NA ...
## $ skyl4 : num [1:20248] NA NA NA NA NA NA NA NA NA NA ...
## $ wxcodes : chr [1:20248] NA NA NA NA ...
## $ ice_accretion_1hr: logi [1:20248] NA NA NA NA NA NA ...
## $ ice_accretion_3hr: logi [1:20248] NA NA NA NA NA NA ...
## $ ice_accretion_6hr: logi [1:20248] NA NA NA NA NA NA ...
## $ peak_wind_gust : logi [1:20248] NA NA NA NA NA NA ...
## $ peak_wind_drct : logi [1:20248] NA NA NA NA NA NA ...
## $ peak_wind_time : logi [1:20248] NA NA NA NA NA NA ...
## $ feel : num [1:20248] 62.6 62.6 60.8 60.8 60.8 59 57.2 57.2 55.4 57.2 ...
## $ metar : chr [1:20248] "MMMY 040040Z 00000KT 7SM SCT070 OVC100 17/15 A3007 RMK 8/07/" "MMMY 040140Z 00000KT 7SM SCT070 SCT100 17/14 A3009 RMK 8/070" "MMMY 040240Z 04003KT 7SM FEW100 16/14 A3009 RMK SLP/// 5//// 9// 8/070" "MMMY 040340Z 00000KT 8SM BKN080 OVC200 16/14 A3009 RMK 8/077" ...
## $ snowdepth : logi [1:20248] NA NA NA NA NA NA ...
# Filtrar información del último mes
mty_dic <- subset(monterrey, valid >= as.POSIXct("2023-12-04 00:00") &
valid <= as.POSIXct("2024-01-04 23:59"))
# Ejercicio 1: Realizar una gráfica de barras de la temperatura promedio
#diario en agosto en Monterrey en °C.
# Ejercicio 1: Realizar una gráfica de barras de la temperatura promedio
#diario en agosto en Monterrey en °C.
mty_dic$tmpc <- (mty_dic$tmpf - 32) * 5/9
mty_dic$fecha <- as.Date(mty_dic$valid)
promedio_mes <- aggregate(tmpc ~ fecha, data = mty_dic, mean)
ggplot(promedio_mes, aes(x = fecha, y = tmpc)) +
geom_col()