# install.packages("tidyverse") # Paquete para 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.1 ✔ tibble 3.2.1
## ✔ lubridate 1.9.4 ✔ tidyr 1.3.1
## ✔ purrr 1.0.4
## ── 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
x <- 3
y <- 2
x
## [1] 3
y
## [1] 2
suma <- x + y
suma
## [1] 5
resta <- x - y
resta
## [1] 1
multiplicacion <-x*y
multiplicacion
## [1] 6
division <- x/y
division
## [1] 1.5
division_entera <- x %/% y
division_entera
## [1] 1
residuo <- x %% y
residuo
## [1] 1
potencia <- x ** 2
potencia
## [1] 9
potencia_2 <- x ^ 2
potencia_2
## [1] 9
raiz_cubica <- x ** (1/3)
raiz_cubica
## [1] 1.44225
raiz_cuadrada <- sqrt (x)
raiz_cuadrada
## [1] 1.732051
#?sqrt # El signo de interrogación es para desplegar ayuda
exponencial <-exp (1)
exponencial
## [1] 2.718282
absoluto <- abs (x)
absoluto
## [1] 3
signo <- sign(x)
signo
## [1] 1
redondeo_arriba <- ceiling (x/y)
redondeo_arriba
## [1] 2
redondeo_abajo <- floor(x/y)
redondeo_abajo
## [1] 1
truncar <- trunc(x/y)
truncar
## [1] 1
pi
## [1] 3.141593
radio <- 5
area_circulo <- pi*radio**2
area_circulo
## [1] 78.53982
a <- c(1,2,3,4,5) #Secuencia de enteros 1:5
a
## [1] 1 2 3 4 5
b <- seq(1,10, by = 0.5)
b
## [1] 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0
## [16] 8.5 9.0 9.5 10.0
nombres <- c("Juan", "Ana", "Pedro", "Carla", "Sara")
nombres
## [1] "Juan" "Ana" "Pedro" "Carla" "Sara"
calificaciones <- c(100, 90, 50, 100, 65)
calificaciones
## [1] 100 90 50 100 65
longitud <- length (a)
longitud
## [1] 5
promedio <- mean(calificaciones)
promedio
## [1] 81
orden_ascendente <- sort(calificaciones)
orden_ascendente
## [1] 50 65 90 100 100
orden_descendente <- sort(calificaciones)
orden_descendente
## [1] 50 65 90 100 100
tabla_de_calificaciones <- data.frame(nombres, calificaciones)
tabla_de_calificaciones$estatus <- ifelse(tabla_de_calificaciones$calificaciones>=70, "Aprobado", "Reprobado")
#Condionales: Igual ==, Desigual !=, Mayor que >, Menor que < ,
#Mayor o igual que >=, Menor o igual que <=
summary(tabla_de_calificaciones)
## nombres calificaciones estatus
## Length:5 Min. : 50 Length:5
## Class :character 1st Qu.: 65 Class :character
## Mode :character Median : 90 Mode :character
## Mean : 81
## 3rd Qu.:100
## Max. :100
str(tabla_de_calificaciones)
## 'data.frame': 5 obs. of 3 variables:
## $ nombres : chr "Juan" "Ana" "Pedro" "Carla" ...
## $ calificaciones: num 100 90 50 100 65
## $ estatus : chr "Aprobado" "Aprobado" "Reprobado" "Aprobado" ...
head(tabla_de_calificaciones) #6 por Defalult
## nombres calificaciones estatus
## 1 Juan 100 Aprobado
## 2 Ana 90 Aprobado
## 3 Pedro 50 Reprobado
## 4 Carla 100 Aprobado
## 5 Sara 65 Reprobado
tail(tabla_de_calificaciones)
## nombres calificaciones estatus
## 1 Juan 100 Aprobado
## 2 Ana 90 Aprobado
## 3 Pedro 50 Reprobado
## 4 Carla 100 Aprobado
## 5 Sara 65 Reprobado
alumno <- c("Raúl", "Renata", "Juan", "Sergio", "Meme")
peso <- c(78, 52, 78, 90, 560)
altura <- c(1.80, 1.55, 1.75, 1.86, 1.80)
imc <- peso / (altura^2)
datos_imc <- data.frame(Alumno = alumno, Peso_kg = peso, Altura_m = altura, IMC = imc)
datos_imc$IMC <- ifelse(datos_imc$IMC < 18.5, "Bajo peso",
ifelse(datos_imc$IMC <=24.9, "Peso Normal",
ifelse(datos_imc$IMC <= 29.9, "Sobrepeso",
"Obesidad")))
# Mostrar la tabla
print(datos_imc)
## Alumno Peso_kg Altura_m IMC
## 1 Raúl 78 1.80 Peso Normal
## 2 Renata 52 1.55 Peso Normal
## 3 Juan 78 1.75 Sobrepeso
## 4 Sergio 90 1.86 Sobrepeso
## 5 Meme 560 1.80 Obesidad
Semana <- c(1:10)
Ventas <- c(150, 160, 165, 180, 175, 190, 200, 195, 210, 220)
plot(Semana, Ventas, type="b", main="Ventas Semanales (K USD)")
datos_ventas <- data.frame(Semana, Ventas)
regresion <-lm(Ventas ~ Semana, data=datos_ventas)
summary(regresion)
##
## Call:
## lm(formula = Ventas ~ Semana, data = datos_ventas)
##
## Residuals:
## Min 1Q Median 3Q Max
## -7.758 -1.538 0.500 2.439 6.455
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 144.3333 3.1714 45.51 6.00e-11 ***
## Semana 7.3030 0.5111 14.29 5.61e-07 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 4.643 on 8 degrees of freedom
## Multiple R-squared: 0.9623, Adjusted R-squared: 0.9576
## F-statistic: 204.2 on 1 and 8 DF, p-value: 5.614e-07
datos_nuevos <- data.frame (Semana =11:20)
prediccion <- predict(regresion, datos_nuevos)
prediccion
## 1 2 3 4 5 6 7 8
## 224.6667 231.9697 239.2727 246.5758 253.8788 261.1818 268.4848 275.7879
## 9 10
## 283.0909 290.3939
R es un lenguaje de programación útil para realizar cálculos, principalmente estadísticos, y forma parte de las herramientas del Big Data.
RStudio es el entorno donde se puede programar R y gracias a que también aquí se puede programar Phyton, hace unos años se anunció que su nombre será Posit.
En esta introducción, lo que llama la atención es la constante aparición de alertas o errores en el programa, los cuáles encontramos que prinicalmente se deben a la versión no es la más reciente, a la falta de instalación de paquetes o llamar a las librerías, problemas de escritura (typos) y los muchos argumentos que tienen las funciones.
Si desde un inicio programas de forma estructurada , disciplinada y metícula, podremos proveer muchas de las alertas o errores y así obtendremos los muchos beneficios de la programación de pronósticos.