R Markdown

This is an R Markdown document. Markdown is a simple formatting syntax for authoring HTML, PDF, and MS Word documents. For more details on using R Markdown see http://rmarkdown.rstudio.com.

When you click the Knit button a document will be generated that includes both content as well as the output of any embedded R code chunks within the document. You can embed an R code chunk like this:

##Paso 1.Instalar paquetes y llamar librerias

#install.packages("riem")
library(riem)
#install.packages('tidyverse')
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.0     ✔ readr     2.1.4
## ✔ forcats   1.0.0     ✔ stringr   1.5.0
## ✔ ggplot2   3.4.1     ✔ tibble    3.1.8
## ✔ lubridate 1.9.2     ✔ tidyr     1.3.0
## ✔ purrr     1.0.1     
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the ]8;;http://conflicted.r-lib.org/conflicted package]8;; to force all conflicts to become errors
#install.package("lubridate")
library(lubridate)
#install.package("ggplot2")
library(ggplot2)
#install.package("plotly")
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 2. buscar la red (pais) ejemplo mexico y copiar code

view(riem_networks())

##Paso 3 buscar la estacion (ciudad) ejemplo monterrey

view(riem_stations("MX__ASOS"))

##Paso 4. obtener informacion

monterrey <- riem_measures("MMMY")
str(monterrey)
## tibble [82,166 × 32] (S3: tbl_df/tbl/data.frame)
##  $ station          : chr [1:82166] "MMMY" "MMMY" "MMMY" "MMMY" ...
##  $ valid            : POSIXct[1:82166], format: "2014-01-01 00:16:00" "2014-01-01 00:49:00" ...
##  $ lon              : num [1:82166] -100 -100 -100 -100 -100 ...
##  $ lat              : num [1:82166] 25.8 25.8 25.8 25.8 25.8 ...
##  $ tmpf             : num [1:82166] 48.2 48.2 48.2 46.4 46.4 46.4 46.4 46.4 46.4 46.4 ...
##  $ dwpf             : num [1:82166] 46.4 46.4 46.4 46.4 46.4 44.6 44.6 44.6 44.6 44.6 ...
##  $ relh             : num [1:82166] 93.5 93.5 93.5 100 100 ...
##  $ drct             : num [1:82166] 0 120 120 120 110 100 110 130 60 0 ...
##  $ sknt             : num [1:82166] 0 3 5 6 5 5 4 3 3 0 ...
##  $ p01i             : num [1:82166] 0 0 0 0 0 0 0 0 0 0 ...
##  $ alti             : num [1:82166] 30.3 30.3 30.3 30.3 30.3 ...
##  $ mslp             : num [1:82166] NA NA NA NA NA ...
##  $ vsby             : num [1:82166] 4 3 1 0.25 0.12 0.12 0.06 0.06 0.06 0.12 ...
##  $ gust             : num [1:82166] NA NA NA NA NA NA NA NA NA NA ...
##  $ skyc1            : chr [1:82166] "SCT" "SCT" "SCT" "VV " ...
##  $ skyc2            : chr [1:82166] "BKN" "BKN" "BKN" NA ...
##  $ skyc3            : chr [1:82166] "OVC" "OVC" "OVC" NA ...
##  $ skyc4            : chr [1:82166] NA NA NA NA ...
##  $ skyl1            : num [1:82166] 700 300 200 200 100 100 100 100 100 100 ...
##  $ skyl2            : num [1:82166] 1200 400 300 NA NA NA NA NA NA NA ...
##  $ skyl3            : num [1:82166] 4000 900 500 NA NA NA NA NA NA NA ...
##  $ skyl4            : num [1:82166] NA NA NA NA NA NA NA NA NA NA ...
##  $ wxcodes          : chr [1:82166] NA "BR" "BR" "FG" ...
##  $ ice_accretion_1hr: logi [1:82166] NA NA NA NA NA NA ...
##  $ ice_accretion_3hr: logi [1:82166] NA NA NA NA NA NA ...
##  $ ice_accretion_6hr: logi [1:82166] NA NA NA NA NA NA ...
##  $ peak_wind_gust   : logi [1:82166] NA NA NA NA NA NA ...
##  $ peak_wind_drct   : logi [1:82166] NA NA NA NA NA NA ...
##  $ peak_wind_time   : logi [1:82166] NA NA NA NA NA NA ...
##  $ feel             : num [1:82166] 48.2 47.2 45.6 42.9 43.5 ...
##  $ metar            : chr [1:82166] "MMMY 010016Z 00000KT 4SM SCT007 BKN012 OVC040 09/08 A3028 RMK 8/5// BR" "MMMY 010049Z 12003KT 3SM BR SCT003 BKN004 OVC009 09/08 A3028 RMK 8/5// -DZ OCNL" "MMMY 010116Z 12005KT 1SM BR SCT002 BKN003 OVC005 09/08 A3028 RMK 8/6// -DZ OCNL" "MMMY 010120Z 12006KT 1/4SM FG VV002 08/08 A3029 RMK 8//// BC FG MOV SE/NW" ...
##  $ snowdepth        : logi [1:82166] NA NA NA NA NA NA ...

##Poxi=formarto de fecha que tiene hora

##Paso 5. agregar temperatura en grados centigrados

monterrey$temp<- (monterrey$tmpf-32)/1.8
str(monterrey)
## tibble [82,166 × 33] (S3: tbl_df/tbl/data.frame)
##  $ station          : chr [1:82166] "MMMY" "MMMY" "MMMY" "MMMY" ...
##  $ valid            : POSIXct[1:82166], format: "2014-01-01 00:16:00" "2014-01-01 00:49:00" ...
##  $ lon              : num [1:82166] -100 -100 -100 -100 -100 ...
##  $ lat              : num [1:82166] 25.8 25.8 25.8 25.8 25.8 ...
##  $ tmpf             : num [1:82166] 48.2 48.2 48.2 46.4 46.4 46.4 46.4 46.4 46.4 46.4 ...
##  $ dwpf             : num [1:82166] 46.4 46.4 46.4 46.4 46.4 44.6 44.6 44.6 44.6 44.6 ...
##  $ relh             : num [1:82166] 93.5 93.5 93.5 100 100 ...
##  $ drct             : num [1:82166] 0 120 120 120 110 100 110 130 60 0 ...
##  $ sknt             : num [1:82166] 0 3 5 6 5 5 4 3 3 0 ...
##  $ p01i             : num [1:82166] 0 0 0 0 0 0 0 0 0 0 ...
##  $ alti             : num [1:82166] 30.3 30.3 30.3 30.3 30.3 ...
##  $ mslp             : num [1:82166] NA NA NA NA NA ...
##  $ vsby             : num [1:82166] 4 3 1 0.25 0.12 0.12 0.06 0.06 0.06 0.12 ...
##  $ gust             : num [1:82166] NA NA NA NA NA NA NA NA NA NA ...
##  $ skyc1            : chr [1:82166] "SCT" "SCT" "SCT" "VV " ...
##  $ skyc2            : chr [1:82166] "BKN" "BKN" "BKN" NA ...
##  $ skyc3            : chr [1:82166] "OVC" "OVC" "OVC" NA ...
##  $ skyc4            : chr [1:82166] NA NA NA NA ...
##  $ skyl1            : num [1:82166] 700 300 200 200 100 100 100 100 100 100 ...
##  $ skyl2            : num [1:82166] 1200 400 300 NA NA NA NA NA NA NA ...
##  $ skyl3            : num [1:82166] 4000 900 500 NA NA NA NA NA NA NA ...
##  $ skyl4            : num [1:82166] NA NA NA NA NA NA NA NA NA NA ...
##  $ wxcodes          : chr [1:82166] NA "BR" "BR" "FG" ...
##  $ ice_accretion_1hr: logi [1:82166] NA NA NA NA NA NA ...
##  $ ice_accretion_3hr: logi [1:82166] NA NA NA NA NA NA ...
##  $ ice_accretion_6hr: logi [1:82166] NA NA NA NA NA NA ...
##  $ peak_wind_gust   : logi [1:82166] NA NA NA NA NA NA ...
##  $ peak_wind_drct   : logi [1:82166] NA NA NA NA NA NA ...
##  $ peak_wind_time   : logi [1:82166] NA NA NA NA NA NA ...
##  $ feel             : num [1:82166] 48.2 47.2 45.6 42.9 43.5 ...
##  $ metar            : chr [1:82166] "MMMY 010016Z 00000KT 4SM SCT007 BKN012 OVC040 09/08 A3028 RMK 8/5// BR" "MMMY 010049Z 12003KT 3SM BR SCT003 BKN004 OVC009 09/08 A3028 RMK 8/5// -DZ OCNL" "MMMY 010116Z 12005KT 1SM BR SCT002 BKN003 OVC005 09/08 A3028 RMK 8/6// -DZ OCNL" "MMMY 010120Z 12006KT 1/4SM FG VV002 08/08 A3029 RMK 8//// BC FG MOV SE/NW" ...
##  $ snowdepth        : logi [1:82166] NA NA NA NA NA NA ...
##  $ temp             : num [1:82166] 9 9 9 8 8 8 8 8 8 8 ...

##Paso 6. Filtrar informacion - Ejemplo de Enero a marzo 2023

este_ano <- subset(monterrey, valid>= as.POSIXct("2023-01-01 00:00")& valid<= as.POSIXct("2023-03-10 07:00"))
view(este_ano)

##Paso 7. graficar temperatura en 2023

plot(este_ano$valid, este_ano$temp)

view(este_ano)

##Paso 8. Promediar informarcion por dia

este_ano <- este_ano %>%
  mutate(date=ymd_hms(valid), date= as.Date(date)) %>%
  group_by(date) %>%
  summarize_if(is.numeric, ~mean(.,na.rm=TRUE))

##Paso 9. graficar temperatura 2023

plot(este_ano$date, este_ano$temp, type="l", main="Temperatura Promedio en Monterrey", xlab="Fecha", ylab="Centigrados")

view(este_ano)
LS0tDQp0aXRsZTogIk9idGVuY2lvbiBkZSBkYXRvcyBjbGltYSINCmF1dGhvcjogIlNlYmFzdGlhbiBlc3Bpbm96YSBBMDA4MzM3MDQiDQpkYXRlOiAiMjAyMy0wMy0xMCINCm91dHB1dDoNCiAgaHRtbF9kb2N1bWVudDoNCiAgICB0b2M6IHRydWUNCiAgICB0b2NfZmxvYXQ6IHRydWUNCiAgICBjb2RlX2Rvd25sb2FkOiB0cnVlDQotLS0NCjxpbWcgc3JjPSJDOlxcVXNlcnNcXHNlYmFzdGlhblxcRG93bmxvYWRzXFxDYXB0dXJhIGRlIHBhbnRhbGxhIDIwMjMtMDMtMTAgMDkxMzQ5LnBuZyI+DQoNCmBgYHtyIHNldHVwLCBpbmNsdWRlPUZBTFNFfQ0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG8gPSBUUlVFKQ0KYGBgDQoNCiMjIFIgTWFya2Rvd24NCg0KVGhpcyBpcyBhbiBSIE1hcmtkb3duIGRvY3VtZW50LiBNYXJrZG93biBpcyBhIHNpbXBsZSBmb3JtYXR0aW5nIHN5bnRheCBmb3IgYXV0aG9yaW5nIEhUTUwsIFBERiwgYW5kIE1TIFdvcmQgZG9jdW1lbnRzLiBGb3IgbW9yZSBkZXRhaWxzIG9uIHVzaW5nIFIgTWFya2Rvd24gc2VlIDxodHRwOi8vcm1hcmtkb3duLnJzdHVkaW8uY29tPi4NCg0KV2hlbiB5b3UgY2xpY2sgdGhlICoqS25pdCoqIGJ1dHRvbiBhIGRvY3VtZW50IHdpbGwgYmUgZ2VuZXJhdGVkIHRoYXQgaW5jbHVkZXMgYm90aCBjb250ZW50IGFzIHdlbGwgYXMgdGhlIG91dHB1dCBvZiBhbnkgZW1iZWRkZWQgUiBjb2RlIGNodW5rcyB3aXRoaW4gdGhlIGRvY3VtZW50LiBZb3UgY2FuIGVtYmVkIGFuIFIgY29kZSBjaHVuayBsaWtlIHRoaXM6DQoNCiMjUGFzbyAxLkluc3RhbGFyIHBhcXVldGVzICB5IGxsYW1hciBsaWJyZXJpYXMNCmBgYHtyfQ0KI2luc3RhbGwucGFja2FnZXMoInJpZW0iKQ0KbGlicmFyeShyaWVtKQ0KI2luc3RhbGwucGFja2FnZXMoJ3RpZHl2ZXJzZScpDQpsaWJyYXJ5KHRpZHl2ZXJzZSkNCiNpbnN0YWxsLnBhY2thZ2UoImx1YnJpZGF0ZSIpDQpsaWJyYXJ5KGx1YnJpZGF0ZSkNCiNpbnN0YWxsLnBhY2thZ2UoImdncGxvdDIiKQ0KbGlicmFyeShnZ3Bsb3QyKQ0KI2luc3RhbGwucGFja2FnZSgicGxvdGx5IikNCmxpYnJhcnkocGxvdGx5KQ0KYGBgDQoNCiMjUGFzbyAyLiBidXNjYXIgbGEgcmVkIChwYWlzKSBlamVtcGxvIG1leGljbyB5IGNvcGlhciBjb2RlDQpgYGB7cn0NCnZpZXcocmllbV9uZXR3b3JrcygpKQ0KYGBgDQoNCiMjUGFzbyAzIGJ1c2NhciBsYSBlc3RhY2lvbiAoY2l1ZGFkKSBlamVtcGxvIG1vbnRlcnJleQ0KYGBge3J9DQp2aWV3KHJpZW1fc3RhdGlvbnMoIk1YX19BU09TIikpDQpgYGANCg0KIyNQYXNvIDQuIG9idGVuZXIgaW5mb3JtYWNpb24NCmBgYHtyfQ0KbW9udGVycmV5IDwtIHJpZW1fbWVhc3VyZXMoIk1NTVkiKQ0Kc3RyKG1vbnRlcnJleSkNCmBgYA0KDQojI1BveGk9Zm9ybWFydG8gZGUgZmVjaGEgcXVlIHRpZW5lIGhvcmENCg0KIyNQYXNvIDUuIGFncmVnYXIgdGVtcGVyYXR1cmEgZW4gZ3JhZG9zIGNlbnRpZ3JhZG9zDQpgYGB7cn0NCm1vbnRlcnJleSR0ZW1wPC0gKG1vbnRlcnJleSR0bXBmLTMyKS8xLjgNCnN0cihtb250ZXJyZXkpDQpgYGANCg0KIyNQYXNvIDYuIEZpbHRyYXIgaW5mb3JtYWNpb24gLSBFamVtcGxvIGRlIEVuZXJvIGEgbWFyem8gMjAyMw0KYGBge3J9DQplc3RlX2FubyA8LSBzdWJzZXQobW9udGVycmV5LCB2YWxpZD49IGFzLlBPU0lYY3QoIjIwMjMtMDEtMDEgMDA6MDAiKSYgdmFsaWQ8PSBhcy5QT1NJWGN0KCIyMDIzLTAzLTEwIDA3OjAwIikpDQp2aWV3KGVzdGVfYW5vKQ0KYGBgDQoNCiMjUGFzbyA3LiBncmFmaWNhciB0ZW1wZXJhdHVyYSBlbiAyMDIzDQpgYGB7cn0NCnBsb3QoZXN0ZV9hbm8kdmFsaWQsIGVzdGVfYW5vJHRlbXApDQp2aWV3KGVzdGVfYW5vKQ0KYGBgDQoNCiMjUGFzbyA4LiBQcm9tZWRpYXIgaW5mb3JtYXJjaW9uIHBvciBkaWENCmBgYHtyfQ0KZXN0ZV9hbm8gPC0gZXN0ZV9hbm8gJT4lDQogIG11dGF0ZShkYXRlPXltZF9obXModmFsaWQpLCBkYXRlPSBhcy5EYXRlKGRhdGUpKSAlPiUNCiAgZ3JvdXBfYnkoZGF0ZSkgJT4lDQogIHN1bW1hcml6ZV9pZihpcy5udW1lcmljLCB+bWVhbiguLG5hLnJtPVRSVUUpKQ0KYGBgDQoNCiMjUGFzbyA5LiBncmFmaWNhciB0ZW1wZXJhdHVyYSAyMDIzDQpgYGB7cn0NCnBsb3QoZXN0ZV9hbm8kZGF0ZSwgZXN0ZV9hbm8kdGVtcCwgdHlwZT0ibCIsIG1haW49IlRlbXBlcmF0dXJhIFByb21lZGlvIGVuIE1vbnRlcnJleSIsIHhsYWI9IkZlY2hhIiwgeWxhYj0iQ2VudGlncmFkb3MiKQ0Kdmlldyhlc3RlX2FubykNCmBgYA==