Teoría

La información del clima se obtiene del ASOS (Automated Surface Observing System) ubicados en los aeropuertos de la ciudad.

Instalar paquetes y llamar librerías

# install.packages("riem")  # Accesar al ASOS para obtener datos climáticos. 
library(riem)
# install.packages("tidyverse") #Manipulación de datos 
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.4     ✔ readr     2.1.5
## ✔ forcats   1.0.0     ✔ stringr   1.5.1
## ✔ ggplot2   3.5.0     ✔ tibble    3.2.1
## ✔ lubridate 1.9.3     ✔ tidyr     1.3.1
## ✔ purrr     1.0.2     
## ── 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") #Gráficas con mejor diseño que plot
library(ggplot2)
# install.packages("plotly") # Gráficas con mejor calidad
library(plotly)
## 
## 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

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 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 frebrero

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$date <- as.Date(clima_mty_feb$valid)

cmfd <- aggregate (clima_mty_feb, by=list(date = clima_mty_feb$date), 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 la humedad relativa promedio por día
plot(cmfd$date, cmfd$relh, type="l", main= "Promedio diario de humedad relativa en Monterrey durante febrero 2024", xlab="Fecha", ylab= "Humedad Relativa (%)")

# cmpd <- clima_mty_feb %>% mutate(date=ymd_hm(valid), date=as.Date(date)) %>% group_by(date) %>% summarise_if(is.nuemric, mean(., na.rm=TRUE))

Ejercicio 3. Graficar la Temperatura en °C promedio diaria durante febrero 2024 en Ciudad de México

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 (Ciudad de México) y copiar ID

view(riem_stations("MX__ASOS"))
#MMMX

Paso 3. Obtener datos del clima

clima_cdmx <- riem_measures("MMMX")

Obtener datos del clima de Ciudad de México de Febrero 2024

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

clima_diario <- clima_cdmx_feb %>% mutate(date = ymd_hms(valid), date= as.Date(date)) %>%
  group_by(date)%>%
  summarize_if(is.numeric, ~ mean(., na.rm = TRUE))
tibble(clima_diario)
## # A tibble: 30 × 18
##    date         lon   lat  tmpf  dwpf  relh  drct  sknt  p01i  alti  mslp  vsby
##    <date>     <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
##  1 2024-02-01 -99.1  19.4  61.5  37.3  41.4 184    5.24     0  30.3 1014.  8.52
##  2 2024-02-02 -99.1  19.4  62.3  38.6  45.2 134.   6.82     0  30.2 1010. 10.9 
##  3 2024-02-03 -99.1  19.4  64.1  23.3  24.8 166.   7.34     0  30.1 1004. 11.4 
##  4 2024-02-04 -99.1  19.4  63.0  17.7  21.3 164.   5.5      0  30.2 1007. 11.3 
##  5 2024-02-05 -99.1  19.4  59.4  15.3  19.8  96.3  5.07     0  30.3 1011. 11.1 
##  6 2024-02-06 -99.1  19.4  58.6  18.1  24.4 157.   5.17     0  30.3 1012. 10.9 
##  7 2024-02-07 -99.1  19.4  61.3  22.2  26.0  95.1  5.51     0  30.3 1011.  9.14
##  8 2024-02-08 -99.1  19.4  67.7  25.3  23.0 118.   5.5      0  30.3 1008.  7.75
##  9 2024-02-09 -99.1  19.4  68.4  26.6  23.8 106.   6.08     0  30.2 1006.  9.44
## 10 2024-02-10 -99.1  19.4  66.9  30.6  30.9 172.   6.37     0  30.2 1006. 11.5 
## # ℹ 20 more rows
## # ℹ 6 more variables: gust <dbl>, skyl1 <dbl>, skyl2 <dbl>, skyl3 <dbl>,
## #   skyl4 <dbl>, feel <dbl>

Convertir los grados a centigrados/span>

# Conversión a centigrados
clima_centigrados <- clima_diario
clima_centigrados$tmpf <- (clima_centigrados$tmpf-31)/1.8

str(clima_centigrados)
## tibble [30 × 18] (S3: tbl_df/tbl/data.frame)
##  $ date : Date[1:30], format: "2024-02-01" "2024-02-02" ...
##  $ lon  : num [1:30] -99.1 -99.1 -99.1 -99.1 -99.1 ...
##  $ lat  : num [1:30] 19.4 19.4 19.4 19.4 19.4 ...
##  $ tmpf : num [1:30] 17 17.4 18.4 17.8 15.8 ...
##  $ dwpf : num [1:30] 37.3 38.6 23.3 17.7 15.3 ...
##  $ relh : num [1:30] 41.4 45.2 24.8 21.3 19.8 ...
##  $ drct : num [1:30] 184 133.6 165.6 163.9 96.3 ...
##  $ sknt : num [1:30] 5.24 6.82 7.34 5.5 5.07 ...
##  $ p01i : num [1:30] 0 0 0 0 0 0 0 0 0 0 ...
##  $ alti : num [1:30] 30.3 30.2 30.1 30.2 30.3 ...
##  $ mslp : num [1:30] 1014 1010 1004 1007 1011 ...
##  $ vsby : num [1:30] 8.52 10.95 11.38 11.29 11.1 ...
##  $ gust : num [1:30] NaN 21 21.3 NaN NaN ...
##  $ skyl1: num [1:30] 5292 3000 NaN NaN NaN ...
##  $ skyl2: num [1:30] 12667 NaN NaN NaN NaN ...
##  $ skyl3: num [1:30] 22000 NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
##  $ skyl4: num [1:30] NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...
##  $ feel : num [1:30] 61.5 61.9 64.1 62.9 59.1 ...

Crear gráfica

plot(clima_diario$date, clima_centigrados$tmpf,type="l",main="Temperatura (C°) Promedio por día en Saltillo durante Febrero", xlab = "Fecha", ylab = "Temperatura (C°)")

Conclusión

Este código en R realiza varias operaciones para graficar la temperatura promedio diaria en Ciudad de México durante febrero de 2024. Tras el llamado de la librería necesarias podemos obtener las redes para seleccionar la red de México con el código “MX__ASOS” y de ahí el código de “MMMX” para obtener su información climática. Convertimos la temperatura mediante la fórmula de Celsius para poder gráficar el cambio de temperatura en los días de febrero del 2024.

LS0tCnRpdGxlOiAiQ2xpbWEiCmF1dGhvcjogIkFuYSBQYXVsYSBBbHZlYXIgLSBBMDEwMjc3MTQiCmRhdGU6ICIyMDI0LTAyLTI5IgpvdXRwdXQ6IAogIGh0bWxfZG9jdW1lbnQ6CiAgICB0b2M6IFRSVUUKICAgIHRvY19mbG9hdDogVFJVRQogICAgY29kZV9kb3dubG9hZDogVFJVRQogICAgdGhlbWU6IGRhcmsKLS0tCgohW10oL1VzZXJzL2FuYXBhdWFsdmVhci9EZXNrdG9wL2pvc2gtc3dlYXRpbmcuZ2lmKQoKIyA8c3BhbiBzdHlsZT0iY29sb3I6IHllbGxvdzsiPlRlb3LDrWE8L3NwYW4+CkxhIGluZm9ybWFjacOzbiBkZWwgY2xpbWEgc2Ugb2J0aWVuZSBkZWwgKipBU09TKiogKCpBdXRvbWF0ZWQgU3VyZmFjZSBPYnNlcnZpbmcgU3lzdGVtKikgdWJpY2Fkb3MgZW4gbG9zIGFlcm9wdWVydG9zIGRlIGxhIGNpdWRhZC4gIAoKIyA8c3BhbiBzdHlsZT0iY29sb3I6IHllbGxvdzsiPkluc3RhbGFyIHBhcXVldGVzIHkgbGxhbWFyIGxpYnJlcsOtYXM8L3NwYW4+CmBgYHtyfQojIGluc3RhbGwucGFja2FnZXMoInJpZW0iKSAgIyBBY2Nlc2FyIGFsIEFTT1MgcGFyYSBvYnRlbmVyIGRhdG9zIGNsaW3DoXRpY29zLiAKbGlicmFyeShyaWVtKQojIGluc3RhbGwucGFja2FnZXMoInRpZHl2ZXJzZSIpICNNYW5pcHVsYWNpw7NuIGRlIGRhdG9zIApsaWJyYXJ5KHRpZHl2ZXJzZSkKIyBpbnN0YWxsLnBhY2thZ2VzKCJnZ3Bsb3QyIikgI0dyw6FmaWNhcyBjb24gbWVqb3IgZGlzZcOxbyBxdWUgcGxvdApsaWJyYXJ5KGdncGxvdDIpCiMgaW5zdGFsbC5wYWNrYWdlcygicGxvdGx5IikgIyBHcsOhZmljYXMgY29uIG1lam9yIGNhbGlkYWQKbGlicmFyeShwbG90bHkpCmBgYAoKIyA8c3BhbiBzdHlsZT0iY29sb3I6IHllbGxvdzsiPlBhc28gMS4gQnVzY2FyIGxhIHJlZCBkZWwgcGHDrXMgKE3DqXhpY28pIHkgY29waWFyIENPREU8L3NwYW4+CmBgYHtyfQojIHZpZXcocmllbV9uZXR3b3JrcygpKQojIE1YX19BU09TCmBgYAoKIyA8c3BhbiBzdHlsZT0iY29sb3I6IHllbGxvdzsiPlBhc28gMi4gQnVzY2FyIGxhIGVzdGFjacOzbiBvIGNpdWRhZCAoTW9udGVycmV5KSB5IGNvcGlhciBJRDwvc3Bhbj4KYGBge3J9CnZpZXcocmllbV9zdGF0aW9ucygiTVhfX0FTT1MiKSkKIyBNTU1ZCmBgYAoKIyA8c3BhbiBzdHlsZT0iY29sb3I6IHllbGxvdzsiPlBhc28gMy4gT2J0ZW5lciBkYXRvcyBkZWwgY2xpbWE8L3NwYW4+CmBgYHtyfQpjbGltYV9tdHkgPC0gcmllbV9tZWFzdXJlcygiTU1NWSIpCmBgYAoKIyA8c3BhbiBzdHlsZT0iY29sb3I6IHllbGxvdzsiPkVqZXJjaWNpbyAxLiBPYnRlbmVyIGRhdG9zIGRlbCBjbGltYSBkZSBNb250ZXJyZXkgZGUgRmVicmVybyAyMDI0PC9zcGFuPgpgYGB7cn0KY2xpbWFfbXR5X2ZlYiA8LSBzdWJzZXQoY2xpbWFfbXR5LCB2YWxpZCA+PSBhcy5QT1NJWGN0KCIyMDI0LTAyLTAxIDAwOjAwIikgJiB2YWxpZCA8PSBhcy5QT1NJWGN0KCIyMDI0LTAyLTI5IDIzOjU5IikpCmBgYAoKIyA8c3BhbiBzdHlsZT0iY29sb3I6IHllbGxvdzsiPkVqZXJjaWNpbyAyLiBHcmFmaWNhciBsYSBodW1lZGFkIHJlbGF0aXZhIGVuIE1vbnRlcnJleSBkdXJhbnRlIGZyZWJyZXJvPC9zcGFuPgpgYGB7cn0KcGxvdChjbGltYV9tdHlfZmViJHZhbGlkLCBjbGltYV9tdHlfZmViJHJlbGgsIHR5cGU9ImwiLCBtYWluPSAiSHVtZWRhZCBSZWxhdGl2YSBlbiBNb250ZXJyZXkgZHVyYW50ZSBGZWJyZXJvIDIwMjQiLCB4bGFiPSJGZWNoYSIsIHlsYWI9ICJIdW1lZGFkIFJlbGF0aXZhICglKSIpCgojIFByb21lZGlhciBIdW1lZGFkIFJlbGF0aXZhIGRpYXJpYQpjbGltYV9tdHlfZmViJGRhdGUgPC0gYXMuRGF0ZShjbGltYV9tdHlfZmViJHZhbGlkKQoKY21mZCA8LSBhZ2dyZWdhdGUgKGNsaW1hX210eV9mZWIsIGJ5PWxpc3QoZGF0ZSA9IGNsaW1hX210eV9mZWIkZGF0ZSksIEZVTj1tZWFuKQoKIyBHcmFmaWNhciBsYSBodW1lZGFkIHJlbGF0aXZhIHByb21lZGlvIHBvciBkw61hCnBsb3QoY21mZCRkYXRlLCBjbWZkJHJlbGgsIHR5cGU9ImwiLCBtYWluPSAiUHJvbWVkaW8gZGlhcmlvIGRlIGh1bWVkYWQgcmVsYXRpdmEgZW4gTW9udGVycmV5IGR1cmFudGUgZmVicmVybyAyMDI0IiwgeGxhYj0iRmVjaGEiLCB5bGFiPSAiSHVtZWRhZCBSZWxhdGl2YSAoJSkiKQoKIyBjbXBkIDwtIGNsaW1hX210eV9mZWIgJT4lIG11dGF0ZShkYXRlPXltZF9obSh2YWxpZCksIGRhdGU9YXMuRGF0ZShkYXRlKSkgJT4lIGdyb3VwX2J5KGRhdGUpICU+JSBzdW1tYXJpc2VfaWYoaXMubnVlbXJpYywgbWVhbiguLCBuYS5ybT1UUlVFKSkKYGBgCgojIDxzcGFuIHN0eWxlPSJjb2xvcjogb3JhbmdlOyI+RWplcmNpY2lvIDMuIEdyYWZpY2FyIGxhIFRlbXBlcmF0dXJhIGVuIMKwQyBwcm9tZWRpbyBkaWFyaWEgZHVyYW50ZSBmZWJyZXJvIDIwMjQgZW4gQ2l1ZGFkIGRlIE3DqXhpY288L3NwYW4+CgojIDxzcGFuIHN0eWxlPSJjb2xvcjogb3JhbmdlOyI+UGFzbyAxLiBCdXNjYXIgbGEgcmVkIGRlbCBwYcOtcyAoTcOpeGljbykgeSBjb3BpYXIgQ09ERTwvc3Bhbj4KYGBge3J9CnZpZXcocmllbV9uZXR3b3JrcygpKQojTVhfX0FTT1MKYGBgCgojIDxzcGFuIHN0eWxlPSJjb2xvcjogb3JhbmdlOyI+UGFzbyAyLiBCdXNjYXIgbGEgZXN0YWNpw7NuIG8gY2l1ZGFkIChDaXVkYWQgZGUgTcOpeGljbykgeSBjb3BpYXIgSUQ8L3NwYW4+CmBgYHtyfQp2aWV3KHJpZW1fc3RhdGlvbnMoIk1YX19BU09TIikpCiNNTU1YCmBgYAoKIyA8c3BhbiBzdHlsZT0iY29sb3I6IG9yYW5nZTsiPlBhc28gMy4gT2J0ZW5lciBkYXRvcyBkZWwgY2xpbWE8L3NwYW4+CmBgYHtyfQpjbGltYV9jZG14IDwtIHJpZW1fbWVhc3VyZXMoIk1NTVgiKQpgYGAKCiMgPHNwYW4gc3R5bGU9ImNvbG9yOiBvcmFuZ2U7Ij5PYnRlbmVyIGRhdG9zIGRlbCBjbGltYSBkZSBDaXVkYWQgZGUgTcOpeGljbyBkZSBGZWJyZXJvIDIwMjQ8L3NwYW4+CmBgYHtyfQpjbGltYV9jZG14X2ZlYiA8LSBzdWJzZXQoY2xpbWFfY2RteCwgdmFsaWQgPj0gYXMuUE9TSVhjdCgiMjAyNC0wMi0wMSAwMDowMCIpICYgdmFsaWQgPD0gYXMuUE9TSVhjdCgiMjAyNC0wMi0yOSAyMzo1OSIpKQoKY2xpbWFfZGlhcmlvIDwtIGNsaW1hX2NkbXhfZmViICU+JSBtdXRhdGUoZGF0ZSA9IHltZF9obXModmFsaWQpLCBkYXRlPSBhcy5EYXRlKGRhdGUpKSAlPiUKICBncm91cF9ieShkYXRlKSU+JQogIHN1bW1hcml6ZV9pZihpcy5udW1lcmljLCB+IG1lYW4oLiwgbmEucm0gPSBUUlVFKSkKdGliYmxlKGNsaW1hX2RpYXJpbykKYGBgCgojIDxzcGFuIHN0eWxlPSJjb2xvcjogb3JhbmdlOyI+IENvbnZlcnRpciBsb3MgZ3JhZG9zIGEgY2VudGlncmFkb3Mvc3Bhbj4KYGBge3J9CgojIENvbnZlcnNpw7NuIGEgY2VudGlncmFkb3MKY2xpbWFfY2VudGlncmFkb3MgPC0gY2xpbWFfZGlhcmlvCmNsaW1hX2NlbnRpZ3JhZG9zJHRtcGYgPC0gKGNsaW1hX2NlbnRpZ3JhZG9zJHRtcGYtMzEpLzEuOAoKc3RyKGNsaW1hX2NlbnRpZ3JhZG9zKQoKYGBgCgojIDxzcGFuIHN0eWxlPSJjb2xvcjogb3JhbmdlOyI+Q3JlYXIgZ3LDoWZpY2E8L3NwYW4+CmBgYHtyfQpwbG90KGNsaW1hX2RpYXJpbyRkYXRlLCBjbGltYV9jZW50aWdyYWRvcyR0bXBmLHR5cGU9ImwiLG1haW49IlRlbXBlcmF0dXJhIChDwrApIFByb21lZGlvIHBvciBkw61hIGVuIFNhbHRpbGxvIGR1cmFudGUgRmVicmVybyIsIHhsYWIgPSAiRmVjaGEiLCB5bGFiID0gIlRlbXBlcmF0dXJhIChDwrApIikKYGBgCgoKIyA8c3BhbiBzdHlsZT0iY29sb3I6IHllbGxvdzsiPkNvbmNsdXNpw7NuPC9zcGFuPgpFc3RlIGPDs2RpZ28gZW4gUiByZWFsaXphIHZhcmlhcyBvcGVyYWNpb25lcyBwYXJhIGdyYWZpY2FyIGxhIHRlbXBlcmF0dXJhIHByb21lZGlvIGRpYXJpYSBlbiBDaXVkYWQgZGUgTcOpeGljbyBkdXJhbnRlIGZlYnJlcm8gZGUgMjAyNC4gVHJhcyBlbCBsbGFtYWRvIGRlIGxhIGxpYnJlcsOtYSBuZWNlc2FyaWFzIHBvZGVtb3Mgb2J0ZW5lciBsYXMgcmVkZXMgcGFyYSBzZWxlY2Npb25hciBsYSByZWQgZGUgTcOpeGljbyBjb24gZWwgY8OzZGlnbyAiTVhfX0FTT1MiIHkgZGUgYWjDrSBlbCBjw7NkaWdvIGRlICJNTU1YIiBwYXJhIG9idGVuZXIgc3UgaW5mb3JtYWNpw7NuIGNsaW3DoXRpY2EuIENvbnZlcnRpbW9zIGxhIHRlbXBlcmF0dXJhIG1lZGlhbnRlIGxhIGbDs3JtdWxhIGRlIENlbHNpdXMgcGFyYSBwb2RlciBncsOhZmljYXIgZWwgY2FtYmlvIGRlIHRlbXBlcmF0dXJhIGVuIGxvcyBkw61hcyBkZSBmZWJyZXJvIGRlbCAyMDI0LiAK