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)
library(dplyr)
# PASO 1. Buscar la red (país) - Ejemplo: México, y copiar CODE
#view(riem_networks())
# PASO 2. Buscar la estación (ciudad) - Ejemplo: taipei, y copiar ID
#view(riem_stations("TW__ASOS"))
# PASO 3. Obtener información de la estación
taipei <- riem_measures("RCSS", date_start = "2025-08-01")
# Análisis Descriptivo
summary(taipei)
## station valid tmpf
## Length:3337 Min. :2025-08-01 00:00:00 Min. : 46.40
## Class :character 1st Qu.:2025-08-17 11:00:00 1st Qu.: 78.80
## Mode :character Median :2025-09-04 05:31:00 Median : 84.20
## Mean :2025-09-27 11:25:23 Mean : 82.39
## 3rd Qu.:2025-10-19 12:58:00 3rd Qu.: 89.60
## Max. :2026-02-25 23:30:00 Max. :100.40
##
## dwpf relh drct sknt p01i
## Min. :35.6 Min. : 39.93 Min. : 0.0 Min. : 0.000 Min. :0
## 1st Qu.:73.4 1st Qu.: 66.44 1st Qu.: 90.0 1st Qu.: 4.000 1st Qu.:0
## Median :75.2 Median : 74.68 Median :100.0 Median : 7.000 Median :0
## Mean :73.3 Mean : 75.40 Mean :148.4 Mean : 7.737 Mean :0
## 3rd Qu.:78.8 3rd Qu.: 83.93 3rd Qu.:230.0 3rd Qu.:11.000 3rd Qu.:0
## Max. :84.2 Max. :100.00 Max. :360.0 Max. :32.000 Max. :0
## NA's :526
## alti mslp vsby gust
## Min. :29.50 Mode:logical Min. :0.310 Min. :13.00
## 1st Qu.:29.77 NA's:3337 1st Qu.:6.210 1st Qu.:22.00
## Median :29.83 Median :6.210 Median :25.00
## Mean :29.85 Mean :5.769 Mean :26.46
## 3rd Qu.:29.88 3rd Qu.:6.210 3rd Qu.:30.00
## Max. :30.42 Max. :6.210 Max. :46.00
## NA's :3213
## skyc1 skyc2 skyc3 skyc4
## Length:3337 Length:3337 Length:3337 Length:3337
## Class :character Class :character Class :character Class :character
## Mode :character Mode :character Mode :character Mode :character
##
##
##
##
## skyl1 skyl2 skyl3 skyl4
## Min. : 300 Min. : 500 Min. : 1500 Min. : 2000
## 1st Qu.:1500 1st Qu.: 2000 1st Qu.: 3200 1st Qu.: 4000
## Median :2000 Median : 3750 Median : 5000 Median : 5500
## Mean :1792 Mean : 6740 Mean : 7886 Mean : 7175
## 3rd Qu.:2000 3rd Qu.: 8000 3rd Qu.:12000 3rd Qu.: 8000
## Max. :4000 Max. :30000 Max. :25000 Max. :25000
## NA's :21 NA's :761 NA's :1647 NA's :3010
## wxcodes ice_accretion_1hr ice_accretion_3hr ice_accretion_6hr
## Length:3337 Mode:logical Mode:logical Mode:logical
## Class :character NA's:3337 NA's:3337 NA's:3337
## Mode :character
##
##
##
##
## peak_wind_gust peak_wind_drct peak_wind_time feel
## Mode:logical Mode:logical Mode:logical Min. : 46.40
## NA's:3337 NA's:3337 NA's:3337 1st Qu.: 78.80
## Median : 92.47
## Mean : 90.81
## 3rd Qu.:102.72
## Max. :124.91
##
## metar snowdepth
## Length:3337 Mode:logical
## Class :character NA's:3337
## Mode :character
##
##
##
##
str(taipei)
## tibble [3,337 × 30] (S3: tbl_df/tbl/data.frame)
## $ station : chr [1:3337] "RCSS" "RCSS" "RCSS" "RCSS" ...
## $ valid : POSIXct[1:3337], format: "2025-08-01 00:00:00" "2025-08-01 00:30:00" ...
## $ tmpf : num [1:3337] 91.4 91.4 91.4 91.4 91.4 91.4 89.6 91.4 93.2 93.2 ...
## $ dwpf : num [1:3337] 80.6 78.8 78.8 78.8 78.8 80.6 80.6 80.6 80.6 80.6 ...
## $ relh : num [1:3337] 70.9 66.8 66.8 66.8 66.8 ...
## $ drct : num [1:3337] 290 320 330 30 NA 60 80 70 60 80 ...
## $ sknt : num [1:3337] 3 5 5 5 4 4 8 6 8 8 ...
## $ p01i : num [1:3337] 0 0 0 0 0 0 0 0 0 0 ...
## $ alti : num [1:3337] 29.6 29.6 29.6 29.6 29.6 ...
## $ mslp : logi [1:3337] NA NA NA NA NA NA ...
## $ vsby : num [1:3337] 6.21 6.21 6.21 6.21 6.21 6.21 6.21 6.21 6.21 6.21 ...
## $ gust : num [1:3337] NA NA NA NA NA NA NA NA NA NA ...
## $ skyc1 : chr [1:3337] "FEW" "FEW" "FEW" "FEW" ...
## $ skyc2 : chr [1:3337] "SCT" "BKN" "SCT" "BKN" ...
## $ skyc3 : chr [1:3337] NA NA "BKN" "BKN" ...
## $ skyc4 : chr [1:3337] NA NA NA NA ...
## $ skyl1 : num [1:3337] 2000 1500 1500 1500 1500 1500 1500 1500 1500 1500 ...
## $ skyl2 : num [1:3337] 10000 10000 6000 6000 6000 3000 1800 3000 3000 1600 ...
## $ skyl3 : num [1:3337] NA NA 10000 10000 10000 7000 3000 7000 NA 3000 ...
## $ skyl4 : num [1:3337] NA NA NA NA NA NA 7000 NA NA 15000 ...
## $ wxcodes : chr [1:3337] NA NA NA NA ...
## $ ice_accretion_1hr: logi [1:3337] NA NA NA NA NA NA ...
## $ ice_accretion_3hr: logi [1:3337] NA NA NA NA NA NA ...
## $ ice_accretion_6hr: logi [1:3337] NA NA NA NA NA NA ...
## $ peak_wind_gust : logi [1:3337] NA NA NA NA NA NA ...
## $ peak_wind_drct : logi [1:3337] NA NA NA NA NA NA ...
## $ peak_wind_time : logi [1:3337] NA NA NA NA NA NA ...
## $ feel : num [1:3337] 111 108 108 108 108 ...
## $ metar : chr [1:3337] "RCSS 010000Z 29003KT 270V340 9999 FEW020 SCT100 33/27 Q1001 NOSIG RMK A2956" "RCSS 010030Z 32005KT 270V360 9999 FEW015 BKN100 33/26 Q1001 NOSIG RMK A2956" "RCSS 010100Z 33005KT 260V030 9999 FEW015 SCT060 BKN100 33/26 Q1001 NOSIG RMK A2956" "RCSS 010130Z 03005KT 9999 FEW015 BKN060 BKN100 33/26 Q1001 NOSIG RMK A2956" ...
## $ snowdepth : logi [1:3337] NA NA NA NA NA NA ...
# Filtrar información del último mes
taipei_aug_25 <- subset(taipei, valid >= as.POSIXct("2025-08-01 00:00") &
valid <= as.POSIXct("2025-08-31 23:59"))
# Ejercicio 1: Realizar una gráfica de barras de la temperatura promedio diario en agosto en taipei en °C.
temp_daily <- taipei_aug_25 %>%
mutate(date = as.Date(valid)) %>%
group_by(date) %>%
summarise(avg_temp_c = mean((tmpf - 32) * 5/9, na.rm = TRUE))
ggplot(temp_daily, aes(x = date, y = avg_temp_c)) +
geom_col(fill = "orange") +
labs(
title = "Temperatura Promedio Diaria en Agosto - Taipei",
x = "Fecha",
y = "Temperatura Promedio (C)"
) +
theme_minimal()