Clima

## Teoría La información del clima se obtiene del ASOS (Automated Surface Observing System) ubicados en los aeropuertos de todas las ciudades del mundo.

Instalar paquetes y llamar librerías

#install.packages("plotly")
library(riem)
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.3.3
library(plotly)
## Warning: package 'plotly' was built under R version 4.3.3
## 
## Attaching package: 'plotly'
## The following object is masked from 'package:ggplot2':
## 
##     last_plot
## The following object is masked from 'package:stats':
## 
##     filter
## The following object is masked from 'package:graphics':
## 
##     layout
#install.packages("tidyverse")
library(tidyverse)
## Warning: package 'tidyverse' was built under R version 4.3.3
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.4     ✔ readr     2.1.5
## ✔ forcats   1.0.0     ✔ stringr   1.5.1
## ✔ lubridate 1.9.3     ✔ tibble    3.2.1
## ✔ purrr     1.0.2     ✔ tidyr     1.3.1
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks plotly::filter(), stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors

Paso 1. Buscar la red del país (México) y copiar CODE

view(riem_networks())
# MX__ASOS

Paso 2. Buscar la estación o ciudad (Monterrey) y copiar ID

view(riem_stations("MX__ASOS"))
# MMMY

Paso 3. Obtener los datos del clima

clima_mty <- riem_measures("MMMY")

Ejercicio 1. Obtener datos del clima de Monterrey de Febrero 2024

clima_mty_feb <- subset(clima_mty, valid >= as.POSIXct("2024-02-01 00:00") & valid <= as.POSIXct("2024-02-29 23:59"))

Ejercicio 2. Graficar la Humedad Relativa en Monterrey durante Febrero 2024

plot(clima_mty_feb$valid,clima_mty_feb$relh,type="l",main="Humedad Relativa en Monterrey durante Febrero 2024", xlab="Fecha", ylab="Humedad Relativa (%)")

Promediar Humedad Relativa diaria

clima_mty_feb$fecha <- as.Date(clima_mty_feb$valid)
str(clima_mty_feb)
## tibble [713 × 33] (S3: tbl_df/tbl/data.frame)
##  $ station          : chr [1:713] "MMMY" "MMMY" "MMMY" "MMMY" ...
##  $ valid            : POSIXct[1:713], format: "2024-02-01 06:40:00" "2024-02-01 07:04:00" ...
##  $ lon              : num [1:713] -100 -100 -100 -100 -100 ...
##  $ lat              : num [1:713] 25.8 25.8 25.8 25.8 25.8 ...
##  $ tmpf             : num [1:713] 57.2 55.4 57.2 59 64.4 66.2 69.8 73.4 75.2 77 ...
##  $ dwpf             : num [1:713] 55.4 55.4 55.4 57.2 57.2 57.2 57.2 57.2 57.2 57.2 ...
##  $ relh             : num [1:713] 93.7 100 93.7 93.7 77.5 ...
##  $ drct             : num [1:713] 110 0 0 210 0 30 120 110 150 130 ...
##  $ sknt             : num [1:713] 3 0 0 3 0 4 4 8 5 8 ...
##  $ p01i             : num [1:713] 0 0 0 0 0 0 0 0 0 0 ...
##  $ alti             : num [1:713] 30.1 30.1 30.1 30.1 30.1 ...
##  $ mslp             : num [1:713] NA NA NA NA NA NA NA NA NA NA ...
##  $ vsby             : num [1:713] 8 2 1.5 2 4 4 5 5 5 7 ...
##  $ gust             : num [1:713] NA NA NA NA NA NA NA NA NA NA ...
##  $ skyc1            : chr [1:713] "BKN" "BKN" "BKN" "BKN" ...
##  $ skyc2            : chr [1:713] NA NA "OVC" "OVC" ...
##  $ skyc3            : chr [1:713] NA NA NA NA ...
##  $ skyc4            : chr [1:713] NA NA NA NA ...
##  $ skyl1            : num [1:713] 2000 500 500 500 7000 3500 NA NA NA NA ...
##  $ skyl2            : num [1:713] NA NA 1000 1000 NA NA NA NA NA NA ...
##  $ skyl3            : num [1:713] NA NA NA NA NA NA NA NA NA NA ...
##  $ skyl4            : num [1:713] NA NA NA NA NA NA NA NA NA NA ...
##  $ wxcodes          : chr [1:713] NA "BR" "BR" "BR" ...
##  $ ice_accretion_1hr: logi [1:713] NA NA NA NA NA NA ...
##  $ ice_accretion_3hr: logi [1:713] NA NA NA NA NA NA ...
##  $ ice_accretion_6hr: logi [1:713] NA NA NA NA NA NA ...
##  $ peak_wind_gust   : logi [1:713] NA NA NA NA NA NA ...
##  $ peak_wind_drct   : logi [1:713] NA NA NA NA NA NA ...
##  $ peak_wind_time   : logi [1:713] NA NA NA NA NA NA ...
##  $ feel             : num [1:713] 57.2 55.4 57.2 59 64.4 66.2 69.8 73.4 75.2 77 ...
##  $ metar            : chr [1:713] "MMMY 011240Z 11003KT 8SM BKN020 14/13 A3007 RMK 8/500" "MMMY 011304Z 00000KT 2SM BR BKN005 13/13 A3007 RMK 8/500" "MMMY 011340Z 00000KT 1 1/2SM BR BKN005 OVC010 14/13 A3007 RMK 8/5//" "MMMY 011445Z 21003KT 2SM BR BKN005 OVC010 15/14 A3008 RMK SLP/// 5//// 9// 8/5// BINOVC" ...
##  $ snowdepth        : logi [1:713] NA NA NA NA NA NA ...
##  $ fecha            : Date[1:713], format: "2024-02-01" "2024-02-01" ...
cmdf <- aggregate(clima_mty_feb, by=list(date = clima_mty_feb$fecha), FUN=mean)
## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

## Warning in mean.default(X[[i]], ...): argument is not numeric or logical:
## returning NA

Graficar Humedad relativa promedio por día

plot(cmdf$fecha,cmdf$relh,type="l",main="Promedio Diario de Humedad Relativa en Monterrey durante Febrero 2024", xlab="Fecha", ylab="Humedad Relativa (%)")

Ejercicio 3. Graficar la temperatura (°C) promedio diaria durante febrero 2024 en ____

view(riem_stations("MX__ASOS"))
# MMPB
clima_pue <- riem_measures("MMPB")
clima_pue_feb <- subset(clima_pue, valid >= as.POSIXct("2024-02-01 00:00") & valid <= as.POSIXct("2024-02-29 23:59"))
clima_pue_feb$tmpf <- (clima_pue_feb$tmpf - 32) * 5/9
plot(clima_pue_feb$valid,clima_pue_feb$relh,type="l",main="Humedad Relativa en Puebla durante Febrero 2024 °C", xlab="Fecha", ylab="Humedad Relativa (%)")

Conclusión

En este código accedimos a datos climáticos de las estaciones de los estados de Monterrey y Puebla, haciendo uso de riem, la cual hace que sea posible acceder a los datos del Sistema Automatizado de Observación Superficial (ASOS). También se calcularon los promedios diarios de la humedad relativa y la temperatura en ambas ciudades, todo esto siendo útil para ver en qué estaciones ha habido mas humedad y en qué días lo que nos ayudará a poder predecir de una mejor manera el clima en esas áreas en el futuro.

LS0tDQp0aXRsZTogIkNsaW1hIE9maWNpYWwiDQphdXRob3I6ICJBbnRvbmlvIENhcmRlbmFzIC0gQTAxNTY4OTA4Ig0KZGF0ZTogIjIwMjQtMDMtMDkiDQpvdXRwdXQ6DQogIGh0bWxfZG9jdW1lbnQ6DQogICAgdG9jOiBUUlVFDQogICAgdG9jX2Zsb2F0OiBUUlVFDQogICAgY29kZV9kb3dubG9hZDogVFJVRQ0KICAgIHRoZW1lOiAibHVtZW4iIA0KICAgIGhpZ2hsaWdodDogImJyZWV6ZWRhciINCi0tLQ0KIyA8c3BhbiBzdHlsZT0iY29sb3I6IHllbGxvdzsiPkNsaW1hPC9zcGFuPg0KIVtdKEM6XFxVc2Vyc1xcYW50b25cXERvd25sb2Fkc1xccG5nLWNsaXBhcnQtY29tcHV0ZXItaWNvbnMtd2VhdGhlci13ZWF0aGVyLWhlYXJ0LXdlYXRoZXItZm9yZWNhc3RpbmcucG5nKQ0KIyMgVGVvcsOtYQ0KTGEgaW5mb3JtYWNpw7NuIGRlbCBjbGltYSBzZSBvYnRpZW5lIGRlbCAqQVNPUyogKEF1dG9tYXRlZCBTdXJmYWNlIE9ic2VydmluZyBTeXN0ZW0pIHViaWNhZG9zIGVuIGxvcyBhZXJvcHVlcnRvcyBkZSB0b2RhcyBsYXMgY2l1ZGFkZXMgZGVsIG11bmRvLg0KDQojIyA8c3BhbiBzdHlsZT0iY29sb3I6IHllbGxvdzsiPkluc3RhbGFyIHBhcXVldGVzIHkgbGxhbWFyIGxpYnJlcsOtYXM8L3NwYW4+DQpgYGB7cn0NCiNpbnN0YWxsLnBhY2thZ2VzKCJwbG90bHkiKQ0KbGlicmFyeShyaWVtKQ0KbGlicmFyeShnZ3Bsb3QyKQ0KbGlicmFyeShwbG90bHkpDQojaW5zdGFsbC5wYWNrYWdlcygidGlkeXZlcnNlIikNCmxpYnJhcnkodGlkeXZlcnNlKQ0KYGBgDQoNCiMjIDxzcGFuIHN0eWxlPSJjb2xvcjogeWVsbG93OyI+UGFzbyAxLiBCdXNjYXIgbGEgcmVkIGRlbCBwYcOtcyAoTcOpeGljbykgeSBjb3BpYXIgQ09ERTwvc3Bhbj4NCmBgYHtyfQ0KdmlldyhyaWVtX25ldHdvcmtzKCkpDQojIE1YX19BU09TDQpgYGANCg0KIyMgPHNwYW4gc3R5bGU9ImNvbG9yOiB5ZWxsb3c7Ij5QYXNvIDIuIEJ1c2NhciBsYSBlc3RhY2nDs24gbyBjaXVkYWQgKE1vbnRlcnJleSkgeSBjb3BpYXIgSUQ8L3NwYW4+DQpgYGB7cn0NCnZpZXcocmllbV9zdGF0aW9ucygiTVhfX0FTT1MiKSkNCiMgTU1NWQ0KYGBgDQoNCiMjIDxzcGFuIHN0eWxlPSJjb2xvcjogeWVsbG93OyI+UGFzbyAzLiBPYnRlbmVyIGxvcyBkYXRvcyBkZWwgY2xpbWE8L3NwYW4+DQpgYGB7cn0NCmNsaW1hX210eSA8LSByaWVtX21lYXN1cmVzKCJNTU1ZIikNCmBgYA0KDQojIyA8c3BhbiBzdHlsZT0iY29sb3I6IHllbGxvdzsiPkVqZXJjaWNpbyAxLiBPYnRlbmVyIGRhdG9zIGRlbCBjbGltYSBkZSBNb250ZXJyZXkgZGUgRmVicmVybyAyMDI0PC9zcGFuPg0KYGBge3J9DQpjbGltYV9tdHlfZmViIDwtIHN1YnNldChjbGltYV9tdHksIHZhbGlkID49IGFzLlBPU0lYY3QoIjIwMjQtMDItMDEgMDA6MDAiKSAmIHZhbGlkIDw9IGFzLlBPU0lYY3QoIjIwMjQtMDItMjkgMjM6NTkiKSkNCmBgYA0KDQojIyA8c3BhbiBzdHlsZT0iY29sb3I6IHllbGxvdzsiPkVqZXJjaWNpbyAyLiBHcmFmaWNhciBsYSBIdW1lZGFkIFJlbGF0aXZhIGVuIE1vbnRlcnJleSBkdXJhbnRlIEZlYnJlcm8gMjAyNDwvc3Bhbj4NCmBgYHtyfQ0KcGxvdChjbGltYV9tdHlfZmViJHZhbGlkLGNsaW1hX210eV9mZWIkcmVsaCx0eXBlPSJsIixtYWluPSJIdW1lZGFkIFJlbGF0aXZhIGVuIE1vbnRlcnJleSBkdXJhbnRlIEZlYnJlcm8gMjAyNCIsIHhsYWI9IkZlY2hhIiwgeWxhYj0iSHVtZWRhZCBSZWxhdGl2YSAoJSkiKQ0KYGBgDQoNCiMjIFByb21lZGlhciBIdW1lZGFkIFJlbGF0aXZhIGRpYXJpYQ0KYGBge3J9DQpjbGltYV9tdHlfZmViJGZlY2hhIDwtIGFzLkRhdGUoY2xpbWFfbXR5X2ZlYiR2YWxpZCkNCmBgYA0KDQpgYGB7cn0NCnN0cihjbGltYV9tdHlfZmViKQ0KY21kZiA8LSBhZ2dyZWdhdGUoY2xpbWFfbXR5X2ZlYiwgYnk9bGlzdChkYXRlID0gY2xpbWFfbXR5X2ZlYiRmZWNoYSksIEZVTj1tZWFuKQ0KYGBgDQoNCiMjIEdyYWZpY2FyIEh1bWVkYWQgcmVsYXRpdmEgcHJvbWVkaW8gcG9yIGTDrWENCmBgYHtyfQ0KcGxvdChjbWRmJGZlY2hhLGNtZGYkcmVsaCx0eXBlPSJsIixtYWluPSJQcm9tZWRpbyBEaWFyaW8gZGUgSHVtZWRhZCBSZWxhdGl2YSBlbiBNb250ZXJyZXkgZHVyYW50ZSBGZWJyZXJvIDIwMjQiLCB4bGFiPSJGZWNoYSIsIHlsYWI9Ikh1bWVkYWQgUmVsYXRpdmEgKCUpIikNCmBgYA0KDQojIyA8c3BhbiBzdHlsZT0iY29sb3I6IHllbGxvdzsiPkVqZXJjaWNpbyAzLiBHcmFmaWNhciBsYSB0ZW1wZXJhdHVyYSAowrBDKSBwcm9tZWRpbyBkaWFyaWEgZHVyYW50ZSBmZWJyZXJvIDIwMjQgZW4gX19fXyA8L3NwYW4+DQpgYGB7cn0NCnZpZXcocmllbV9zdGF0aW9ucygiTVhfX0FTT1MiKSkNCiMgTU1QQg0KYGBgDQoNCmBgYHtyfQ0KY2xpbWFfcHVlIDwtIHJpZW1fbWVhc3VyZXMoIk1NUEIiKQ0KYGBgDQoNCmBgYHtyfQ0KY2xpbWFfcHVlX2ZlYiA8LSBzdWJzZXQoY2xpbWFfcHVlLCB2YWxpZCA+PSBhcy5QT1NJWGN0KCIyMDI0LTAyLTAxIDAwOjAwIikgJiB2YWxpZCA8PSBhcy5QT1NJWGN0KCIyMDI0LTAyLTI5IDIzOjU5IikpDQpgYGANCg0KYGBge3J9DQpjbGltYV9wdWVfZmViJHRtcGYgPC0gKGNsaW1hX3B1ZV9mZWIkdG1wZiAtIDMyKSAqIDUvOQ0KYGBgDQoNCmBgYHtyfQ0KcGxvdChjbGltYV9wdWVfZmViJHZhbGlkLGNsaW1hX3B1ZV9mZWIkcmVsaCx0eXBlPSJsIixtYWluPSJIdW1lZGFkIFJlbGF0aXZhIGVuIFB1ZWJsYSBkdXJhbnRlIEZlYnJlcm8gMjAyNCDCsEMiLCB4bGFiPSJGZWNoYSIsIHlsYWI9Ikh1bWVkYWQgUmVsYXRpdmEgKCUpIikNCmBgYA0KDQojIyA8c3BhbiBzdHlsZT0iY29sb3I6IHllbGxvdzsiPkNvbmNsdXNpw7NuPC9zcGFuPg0KRW4gZXN0ZSBjw7NkaWdvIGFjY2VkaW1vcyBhIGRhdG9zIGNsaW3DoXRpY29zIGRlIGxhcyBlc3RhY2lvbmVzIGRlIGxvcyBlc3RhZG9zIGRlIE1vbnRlcnJleSB5IFB1ZWJsYSwgaGFjaWVuZG8gdXNvIGRlIHJpZW0sIGxhIGN1YWwgaGFjZSBxdWUgc2VhIHBvc2libGUgYWNjZWRlciBhIGxvcyBkYXRvcyBkZWwgU2lzdGVtYSBBdXRvbWF0aXphZG8gZGUgT2JzZXJ2YWNpw7NuIFN1cGVyZmljaWFsIChBU09TKS4NClRhbWJpw6luIHNlIGNhbGN1bGFyb24gbG9zIHByb21lZGlvcyBkaWFyaW9zIGRlIGxhIGh1bWVkYWQgcmVsYXRpdmEgeSBsYSB0ZW1wZXJhdHVyYSBlbiBhbWJhcyBjaXVkYWRlcywgdG9kbyBlc3RvIHNpZW5kbyDDunRpbCBwYXJhICB2ZXIgZW4gcXXDqSBlc3RhY2lvbmVzIGhhIGhhYmlkbyBtYXMgaHVtZWRhZCB5IGVuIHF1w6kgZMOtYXMgbG8gcXVlIG5vcyBheXVkYXLDoSBhIHBvZGVyIHByZWRlY2lyIGRlIHVuYSBtZWpvciBtYW5lcmEgZWwgY2xpbWEgZW4gZXNhcyDDoXJlYXMgZW4gZWwgZnV0dXJvLg0KDQo=