# Primero seleccionamos nuestro directorio de trabajo:setwd("C:/Users/bryan/Downloads/1. Básico/Avance_files/directorio")# Luego descargamos a partir del link de descargalink <-"https://gml.noaa.gov/webdata/ccgg/trends/co2/co2_annmean_mlo.txt"download.file(url = link, destfile ="mauna.csv")# Importamos los datos del csvdatos1 <-read.table(file ="mauna.csv")names(datos1) <-c("year","meanCO","UC")head(datos1)
# Guardamos la nueva tabla de datoswrite.table(x = datos1, file ="mauna2.csv",sep =",")
2 Operadores y relaciones en R
#operador de asignaciónassign("b",c(5,6,5))
2.1 Instrucción “if”
Nos permite ejecutar un bloque de código si se cumple una condición.
x <-10if (x>5) {print("Operación exitosa")print("el número es mayor que 5")}
[1] "Operación exitosa"
[1] "el número es mayor que 5"
2.2 Instrucción “else”
Nos permite ejecutar un código cuando no se cumple la condición evaluada por la instrucción “if”.
x <-4if (x>5) {print("Operación exitosa")print("el número es mayor que 5")} else {print("Operación incorrecta")print("El número es menor o igual a 5")}
[1] "Operación incorrecta"
[1] "El número es menor o igual a 5"
2.3 Instrucción “else if”
Esta instrucción nos permite ejecutar un bloque de código cuando no se cumple con la condición evaluada por la instrucción “if” y se necesite más de una instrucción.
x <-6if (x>6) {print("Operación exitosa")print("el número es mayor que 5")} elseif (x==5){print("La operación no se realizó")print("El número es igual a 5")} elseif (x==6){print("La operación no se realizó")print("El número es igual a 6")} else {print("Operación incorrecta")print("El número es menor o igual a 5")}
[1] "La operación no se realizó"
[1] "El número es igual a 6"
2.4 Instrucción “if else”
Nos permite evaluar de manera rápida si contamos con solo una instrucción para “if” y una instrucción para “else”.
x <-5ifelse(x>5, "El número es mayor que 5","El número es menor o igual que 5")
[1] "El número es menor o igual que 5"
2.5 Instrucción “for”
Es una manera de repetir alguna función o líneas de código mientras se cumple determinadas condiciones. Es útil para repetir un procedimiento una cierta cantidad de veces.
x <-c(20, 15, 17, 18, 20, 25, 26, 29)# Creamos un vector vacíovector <-c()for (i in1:length(x)) { z <- x[i]*2 vector[i] <- z+iprint(paste("El número es:",vector[i]))}
[1] "El número es: 41"
[1] "El número es: 32"
[1] "El número es: 37"
[1] "El número es: 40"
[1] "El número es: 45"
[1] "El número es: 56"
[1] "El número es: 59"
[1] "El número es: 66"
print(paste("El número es:", vector, sep =" "))
[1] "El número es: 41" "El número es: 32" "El número es: 37" "El número es: 40"
[5] "El número es: 45" "El número es: 56" "El número es: 59" "El número es: 66"
2.6 Instrucción “while”
Es muy útil para repetir un procedimiento siempre que se cumple una condición.
[1] "El número 1 Es impar"
[1] "El número 2 Es par"
[1] "El número 3 Es impar"
[1] "El número 4 Es par"
[1] "El número 5 Es impar"
[1] "El número 6 Es par"
2.10 Horarios y fechas
2.10.1 as.Date( )
Sirve para cohercionar elementos de tipo caracter a valores de tipo “date ()”.
# Creamos un objeto se tipo date:end_year <-as.Date(x ="31/12/2022",format="%d/%m/%Y")print(paste("La fecha: ", end_year, " es de tipo ", class(end_year)))
[1] "La fecha: 2022-12-31 es de tipo Date"
# Si se suma un valor númerico, la clase date lo considera como un día más.print(paste("El día siguiente al final de este año es: ", end_year+1))
[1] "El día siguiente al final de este año es: 2023-01-01"
2.10.2 format ( )
new_year <-format(x = end_year+1,format="%A, %d de %B del %Y")print(new_year) # es de tipo caracter
[1] "domingo, 01 de Enero del 2023"
2.11 Secuencias con horarios y fechas
# Creamos una secuencia de fechasseq(as.Date(x="01-12-2022",format="%d-%m-%Y"),as.Date(x="08-12-2022",format="%d-%m-%Y"),by="1 day") # day, week, month, etc.
# Creamos un objeto POSIXctas.POSIXct("01-12-2022",format="%d-%m-%Y")
[1] "2022-12-01 -05"
# POSIXct con hora, minuto y segundos:as.POSIXct("01-12-2022 08:00:00", format="%d-%m-%Y %H:%M:%S",tz ="UTC")
[1] "2022-12-01 08:00:00 UTC"
# La fecha actual:as.POSIXct(Sys.time())
[1] "2022-12-09 15:26:15 -05"
Ejercicio aplicativo 2
Cargar la base de datos del senamhi y realizar transformaciones en las fechas, creando columnas convenientes:
# Cargamos la base de datos:ta <-read.table(file ="qc00000877.txt",header = F,dec=".",stringsAsFactors = F,na.strings ="-99.9")names(ta) <-c("año","mes","dia","pp","tmax","tmin")# creamos la columna de fecha:# Fechas diarias:ta$date <-as.POSIXct(x=paste(ta$año,ta$mes,ta$dia, sep ="-"),format="%Y-%m-%d")# Fechas mensuales:ta$mensual <-format(ta$date, format ="%Y-%m")# Resúmenes de variables:p_mensual <-aggregate(pp~mensual, data = ta,FUN = sum)tmax_mensual <-aggregate(tmax~mensual, data = ta,FUN = mean)tprom_mensual <-aggregate(x=((ta$tmax+ta$tmin)/2)~mensual,data = ta, FUN = mean)
Ejercicio aplicativo 3
Importar la base de datos de promedios mensuales de mauna loa y resolver lo siguiente: