Instalar paquetes y llmar librerías

#install.packages("tidyverse") # Paquete para manipulación de datos
library(tidyverse)
## Warning: package 'ggplot2' was built under R version 4.3.2
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.4     ✔ readr     2.1.4
## ✔ forcats   1.0.0     ✔ stringr   1.5.0
## ✔ ggplot2   3.5.1     ✔ tibble    3.2.1
## ✔ lubridate 1.9.2     ✔ tidyr     1.3.0
## ✔ 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

Asignar una variable e Imprimir el resultado

x <- 3
y <- 2

x
## [1] 3
y
## [1] 2

Operacionas aritméticas

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

Funciones

raiz_cuadrada <- sqrt(x)
raiz_cuadrada
## [1] 1.732051
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

Constantes

pi
## [1] 3.141593
radio <- 5
area_circulo <- pi*radio**2
area_circulo 
## [1] 78.53982

Vectores

a <- c(1,2,3,4,5) # Secuencia de enteros 1:5
a
## [1] 1 2 3 4 5
b <- c(1,10, by = 0.5)
b
##             by 
##  1.0 10.0  0.5
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
promedio <- mean(calificaciones)
promedio
## [1] 81
orden_ascendente <- sort(calificaciones)
orden_ascendente
## [1]  50  65  90 100 100
orden_descendente <- sort(calificaciones, decreasing = TRUE)

Tablas

tabla_de_calificaciones <- data.frame(nombres,calificaciones)
tabla_de_calificaciones$estatus <- ifelse(tabla_de_calificaciones$calificaciones >= 70, "Aprobado","Reprobado")
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
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)
##   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
# Select para seleccionar columnas
resultados <- select(tabla_de_calificaciones, -c(nombres))
# Filter para filtrar renglones
resultados <- filter(resultados, estatus =="Aprobado")

Actividad 1. Calculadora IMC

alumno <- c("Yessica", "Jennifer", "Maggie", "Erika", "Marilu")
peso <- c(60,55,90,70,88)
altura <- c(1.60,1.70,1.65,1.90,1.50)

tabla_salud <- data.frame(alumno,peso,altura)
tabla_salud$IMC <- tabla_salud$peso/(tabla_salud$altura^2)
tabla_salud$resultado <- ifelse(tabla_salud$IMC <18.5,"Bajo Peso",ifelse(tabla_salud$IMC <= 24.9, "Peso normal", ifelse(tabla_salud$IMC <= 29.9, "Sobrepeso", "Obesidad")))
tabla_salud
##     alumno peso altura      IMC   resultado
## 1  Yessica   60   1.60 23.43750 Peso normal
## 2 Jennifer   55   1.70 19.03114 Peso normal
## 3   Maggie   90   1.65 33.05785    Obesidad
## 4    Erika   70   1.90 19.39058 Peso normal
## 5   Marilu   88   1.50 39.11111    Obesidad
# Gráficas

semana <- c(1:10)
ventas <- c(150,160,165,180,190,185,175,200,210,195)
plot(semana,ventas, type= "l", 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 
## -14.2727  -5.1894  -0.2273   6.7576  11.7576 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  150.667      6.301  23.912 9.97e-09 ***
## semana         5.515      1.015   5.431 0.000623 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 9.224 on 8 degrees of freedom
## Multiple R-squared:  0.7866, Adjusted R-squared:   0.76 
## F-statistic:  29.5 on 1 and 8 DF,  p-value: 0.0006226
datos_nuevos <- data.frame(Semana=11:20)
prediccion <- predict(regresion, datos_nuevos)
prediccion
##        1        2        3        4        5        6        7        8 
## 156.1818 161.6970 167.2121 172.7273 178.2424 183.7576 189.2727 194.7879 
##        9       10 
## 200.3030 205.8182

Conclusiones

R es un lenguaje de programación útil para realizar cálculos, principalmente estadísticos y forma parte de las herramientes del Big Data.

RStudio es el entorno donde se puede programar R, y gracias a que también aquí se puede programar Pyhton hace unos años se anunció que su nombre será Posit.

En esta introducción, lo qeu llama la atención es la constatnte aparición de alertas o errores en el programa, los cuales encontramos que principalmente se deben a que 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 programamos de forma estructurada, disciplinada y meticulosa, podremos preveer muchas de las alertas o errores y así obtendremos los muchos beneficios de la programación en R, como la predicción de pronósticos.

LS0tCnRpdGxlOiAiQ29tYW5kb3MgQsOhc2ljb3MiCmF1dGhvcjogIlllc3NpY2EgQWNvc3RhIC0gQTAwODMzNjE3IgpkYXRlOiAiMjAyNS0wMy0xOCIKb3V0cHV0OiAKICBodG1sX2RvY3VtZW50OgogICAgICB0b2M6IFRSVUUKICAgICAgdG9jX2Zsb2F0OiBUUlVFCiAgICAgIGNvZGVfZG93bmxvYWQ6IFRSVUUKICAgICAgdGhlbWU6ICJjb3NtbyIKLS0tCgoKIVtdKC9Vc2Vycy95ZXNzaWNhYWNvc3RhL0Rlc2t0b3AvQm9vdGNhbXAgUi9naWZfaW1jLmdpZikKCiMgSW5zdGFsYXIgcGFxdWV0ZXMgeSBsbG1hciBsaWJyZXLDrWFzCgpgYGB7cn0KI2luc3RhbGwucGFja2FnZXMoInRpZHl2ZXJzZSIpICMgUGFxdWV0ZSBwYXJhIG1hbmlwdWxhY2nDs24gZGUgZGF0b3MKbGlicmFyeSh0aWR5dmVyc2UpCmBgYAoKIyBBc2lnbmFyIHVuYSB2YXJpYWJsZSBlIEltcHJpbWlyIGVsIHJlc3VsdGFkbwoKYGBge3J9CnggPC0gMwp5IDwtIDIKCngKeQpgYGAKCgojIE9wZXJhY2lvbmFzIGFyaXRtw6l0aWNhcwoKYGBge3J9CnN1bWEgPC0geCArIHkKc3VtYQoKcmVzdGEgPC0geCAtIHkKcmVzdGEKCm11bHRpcGxpY2FjaW9uIDwtIHgqeQptdWx0aXBsaWNhY2lvbgoKCmRpdmlzaW9uIDwtIHgveQpkaXZpc2lvbgoKZGl2aXNpb25fZW50ZXJhIDwtIHglLyUgeQpkaXZpc2lvbl9lbnRlcmEKCnJlc2lkdW8gPC0geCAlJSB5CnJlc2lkdW8KCgpwb3RlbmNpYSA8LSB4KioyCnBvdGVuY2lhCgpwb3RlbmNpYV8yIDwtIHggXiAyCnBvdGVuY2lhXzIKCnJhaXpfY3ViaWNhIDwtIHgqKigxLzMpCnJhaXpfY3ViaWNhCgpgYGAKCgojIEZ1bmNpb25lcwoKYGBge3J9CgpyYWl6X2N1YWRyYWRhIDwtIHNxcnQoeCkKcmFpel9jdWFkcmFkYQoKZXhwb25lbmNpYWwgPC0gZXhwKDEpCmV4cG9uZW5jaWFsCgphYnNvbHV0byA8LSBhYnMoeCkKYWJzb2x1dG8KCnNpZ25vIDwtIHNpZ24oeCkKc2lnbm8KCnJlZG9uZGVvX2FycmliYSA8LSBjZWlsaW5nICh4L3kpCnJlZG9uZGVvX2FycmliYQoKcmVkb25kZW9fYWJham8gPC0gZmxvb3IoeC95KQpyZWRvbmRlb19hYmFqbwoKdHJ1bmNhciA8LSB0cnVuYyh4L3kpCnRydW5jYXIKYGBgCgojIENvbnN0YW50ZXMKYGBge3J9CnBpCnJhZGlvIDwtIDUKYXJlYV9jaXJjdWxvIDwtIHBpKnJhZGlvKioyCmFyZWFfY2lyY3VsbyAKYGBgCgojIFZlY3RvcmVzCmBgYHtyfQphIDwtIGMoMSwyLDMsNCw1KSAjIFNlY3VlbmNpYSBkZSBlbnRlcm9zIDE6NQphCgoKYiA8LSBjKDEsMTAsIGJ5ID0gMC41KQpiCgpub21icmVzIDwtIGMoIkp1YW4iLCJBbmEiLCJQZWRybyIsIkNhcmxhIiwiU2FyYSIpCm5vbWJyZXMKCmNhbGlmaWNhY2lvbmVzIDwtIGMoMTAwLDkwLDUwLDEwMCw2NSkKY2FsaWZpY2FjaW9uZXMKCnByb21lZGlvIDwtIG1lYW4oY2FsaWZpY2FjaW9uZXMpCnByb21lZGlvCgpvcmRlbl9hc2NlbmRlbnRlIDwtIHNvcnQoY2FsaWZpY2FjaW9uZXMpCm9yZGVuX2FzY2VuZGVudGUKCm9yZGVuX2Rlc2NlbmRlbnRlIDwtIHNvcnQoY2FsaWZpY2FjaW9uZXMsIGRlY3JlYXNpbmcgPSBUUlVFKQpgYGAKCgojIFRhYmxhcwpgYGB7cn0KdGFibGFfZGVfY2FsaWZpY2FjaW9uZXMgPC0gZGF0YS5mcmFtZShub21icmVzLGNhbGlmaWNhY2lvbmVzKQp0YWJsYV9kZV9jYWxpZmljYWNpb25lcyRlc3RhdHVzIDwtIGlmZWxzZSh0YWJsYV9kZV9jYWxpZmljYWNpb25lcyRjYWxpZmljYWNpb25lcyA+PSA3MCwgIkFwcm9iYWRvIiwiUmVwcm9iYWRvIikKdGFibGFfZGVfY2FsaWZpY2FjaW9uZXMKCgpzdW1tYXJ5KHRhYmxhX2RlX2NhbGlmaWNhY2lvbmVzKQpzdHIodGFibGFfZGVfY2FsaWZpY2FjaW9uZXMpCmhlYWQodGFibGFfZGVfY2FsaWZpY2FjaW9uZXMpCnRhaWwodGFibGFfZGVfY2FsaWZpY2FjaW9uZXMpCgpgYGAKCmBgYHtyfQojIFNlbGVjdCBwYXJhIHNlbGVjY2lvbmFyIGNvbHVtbmFzCnJlc3VsdGFkb3MgPC0gc2VsZWN0KHRhYmxhX2RlX2NhbGlmaWNhY2lvbmVzLCAtYyhub21icmVzKSkKIyBGaWx0ZXIgcGFyYSBmaWx0cmFyIHJlbmdsb25lcwpyZXN1bHRhZG9zIDwtIGZpbHRlcihyZXN1bHRhZG9zLCBlc3RhdHVzID09IkFwcm9iYWRvIikKCmBgYAoKIyBBY3RpdmlkYWQgMS4gQ2FsY3VsYWRvcmEgSU1DCmBgYHtyfQphbHVtbm8gPC0gYygiWWVzc2ljYSIsICJKZW5uaWZlciIsICJNYWdnaWUiLCAiRXJpa2EiLCAiTWFyaWx1IikKcGVzbyA8LSBjKDYwLDU1LDkwLDcwLDg4KQphbHR1cmEgPC0gYygxLjYwLDEuNzAsMS42NSwxLjkwLDEuNTApCgp0YWJsYV9zYWx1ZCA8LSBkYXRhLmZyYW1lKGFsdW1ubyxwZXNvLGFsdHVyYSkKdGFibGFfc2FsdWQkSU1DIDwtIHRhYmxhX3NhbHVkJHBlc28vKHRhYmxhX3NhbHVkJGFsdHVyYV4yKQp0YWJsYV9zYWx1ZCRyZXN1bHRhZG8gPC0gaWZlbHNlKHRhYmxhX3NhbHVkJElNQyA8MTguNSwiQmFqbyBQZXNvIixpZmVsc2UodGFibGFfc2FsdWQkSU1DIDw9IDI0LjksICJQZXNvIG5vcm1hbCIsIGlmZWxzZSh0YWJsYV9zYWx1ZCRJTUMgPD0gMjkuOSwgIlNvYnJlcGVzbyIsICJPYmVzaWRhZCIpKSkKdGFibGFfc2FsdWQKCmBgYAoKYGBge3J9CiMgR3LDoWZpY2FzCgpzZW1hbmEgPC0gYygxOjEwKQp2ZW50YXMgPC0gYygxNTAsMTYwLDE2NSwxODAsMTkwLDE4NSwxNzUsMjAwLDIxMCwxOTUpCnBsb3Qoc2VtYW5hLHZlbnRhcywgdHlwZT0gImwiLCBtYWluPSJWZW50YXMgU2VtYW5hbGVzIChLIFVTRCkiKQpkYXRvc192ZW50YXMgPC0gZGF0YS5mcmFtZShzZW1hbmEsIHZlbnRhcykKcmVncmVzaW9uIDwtIGxtKHZlbnRhcyB+IHNlbWFuYSwgZGF0YT1kYXRvc192ZW50YXMpCnN1bW1hcnkocmVncmVzaW9uKQoKZGF0b3NfbnVldm9zIDwtIGRhdGEuZnJhbWUoU2VtYW5hPTExOjIwKQpwcmVkaWNjaW9uIDwtIHByZWRpY3QocmVncmVzaW9uLCBkYXRvc19udWV2b3MpCnByZWRpY2Npb24KYGBgCgojIENvbmNsdXNpb25lcwoqKlIqKiBlcyB1biBsZW5ndWFqZSBkZSBwcm9ncmFtYWNpw7NuIMO6dGlsIHBhcmEgcmVhbGl6YXIgY8OhbGN1bG9zLCBwcmluY2lwYWxtZW50ZSBlc3RhZMOtc3RpY29zIHkgZm9ybWEgcGFydGUgZGUgbGFzIGhlcnJhbWllbnRlcyBkZWwgKkJpZyBEYXRhKi4KCipSU3R1ZGlvKiBlcyBlbCBlbnRvcm5vIGRvbmRlIHNlIHB1ZWRlIHByb2dyYW1hciAqUiosIHkgZ3JhY2lhcyBhIHF1ZSB0YW1iacOpbiBhcXXDrSBzZSBwdWVkZSBwcm9ncmFtYXIgKlB5aHRvbiogaGFjZSB1bm9zIGHDsW9zIHNlIGFudW5jacOzIHF1ZSBzdSBub21icmUgc2Vyw6EgKlBvc2l0Ki4KCkVuIGVzdGEgaW50cm9kdWNjacOzbiwgbG8gcWV1IGxsYW1hIGxhIGF0ZW5jacOzbiBlcyBsYSBjb25zdGF0bnRlIGFwYXJpY2nDs24gZGUgYWxlcnRhcyBvIGVycm9yZXMgZW4gZWwgcHJvZ3JhbWEsIGxvcyBjdWFsZXMgZW5jb250cmFtb3MgcXVlIHByaW5jaXBhbG1lbnRlIHNlIGRlYmVuIGEgcXVlIGxhIHZlcnNpw7NuIG5vIGVzIGxhIG3DoXMgcmVjaWVudGUgYSBsYSBmYWx0YSBkZSBpbnN0YWxhY2nDs24gZGUgcGFxdWV0ZXMgbyBsbGFtYXIgYSBsYXMgbGlicmVyw61hcywgcHJvYmxlbWFzIGRlIGVzY3JpdHVyYSAoKnR5cG9zKikgeSBsb3MgbXVjaG9zIGFyZ3VtZW50b3MgcXVlIHRpZW5lbiBsYXMgZnVuY2lvbmVzLgoKU2kgZGVzZGUgdW4gaW5pY2lvIHByb2dyYW1hbW9zIGRlIGZvcm1hIGVzdHJ1Y3R1cmFkYSwgZGlzY2lwbGluYWRhIHkgbWV0aWN1bG9zYSwgcG9kcmVtb3MgcHJldmVlciBtdWNoYXMgZGUgbGFzIGFsZXJ0YXMgbyBlcnJvcmVzIHkgYXPDrSBvYnRlbmRyZW1vcyBsb3MgbXVjaG9zIGJlbmVmaWNpb3MgZGUgbGEgcHJvZ3JhbWFjacOzbiBlbiAqUiosIGNvbW8gbGEgcHJlZGljY2nDs24gZGUgcHJvbsOzc3RpY29zLgo=