Instalar paquetes y llamar librerias

#install.packages("tidyverse")  #Paquetes para manipulación 
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

Asignar variable

x <- 3  
y <- 2

Imprimir el resultado

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

#Operaciones aritmeticas

suma <- x + y 
suma
## [1] 5
resta <- x - y 
resta
## [1] 1
multiplicación <- x * y 
multiplicación 
## [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
potenciay <- y ** 2 
potenciay
## [1] 4

Funciones

raiz_cuadrada <- sqrt(x) 
raiz_cuadrada
## [1] 1.732051
raiz_cubica <- x ** (1/3) 
raiz_cubica
## [1] 1.44225
?sqrt
## starting httpd help server ... done
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: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

Otras cosas

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, decreasing = TRUE)
orden_descendente
## [1] 100 100  90  65  50

Tablas

tabla_de_calificaciones <- data.frame(nombres,calificaciones) 
tabla_de_calificaciones$estatus <- ifelse(tabla_de_calificaciones$calificaciones >= 70, "Aprobado","Reprobado") 

condicionales_ Igual ==, Desigual !=

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 selccionar columnas

resultados <- select(tabla_de_calificaciones, -c(nombres)) 

filter para filtrar renglones

resultados <- filter(resultados, estatus == "Aprobado") 

Actividad 1. Calculadora del IMC

alumno <- c("Raul", "Renata", "Juan", "Sergio", "Meme") 
peso <- c(78, 52, 78, 90, 560) 
altura <- c(1.80, 1.55, 1.75, 1.86, 1.80) 

tabla_de_imc <- data.frame(alumno,peso,altura)   
tabla_de_imc$IMC <- tabla_de_imc$peso / tabla_de_imc$altura**2 

tabla_de_imc$resultado <- ifelse(tabla_de_imc$IMC < 18.5, "Bajo Peso", ifelse(tabla_de_imc$IMC <= 24.9, "Peso Normal", ifelse(tabla_de_imc$IMC <= 29.9, "Sobrepeso", "obesidad")))

Grafica

semana <- c(1:10)
ventas <- c(150,160,165,180,175,190,200,195,210,220)
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 
## -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

Conclusión

En esta actividad, inicié cargando el paquete tidyverse para poder manejar mejor la información en R. Luego, declaré un par de variables y realicé operaciones aritméticas básicas como sumas, restas, multiplicaciones y divisiones.

Después, creamos vectores y realicé varias operaciones, como ver su longitud, calcular un promedio y ordenar datos en forma ascendente o descendente. Además, trabajé con tablas de datos, agregando columnas con calificaciones y etiquetas de aprobación o reprobación. Para experimentar con el tema de filtros y selección de columnas, utilicé las funciones select y filter.

También practiqué con una pequeña calculadora de IMC que clasifica a cada persona según su peso y altura. Para terminar, graficar los valores de ventas semanales y generar una regresión lineal.

LS0tDQp0aXRsZTogIkNPTUFORE9TIEJBU0lDT1MiDQphdXRob3I6ICJTZXJnaW8gRmxvcmVzIFZhbGxlam8gQTAxNTUyMjk1Ig0KZGF0ZTogIjIwMjUtMDMtMTgiDQpvdXRwdXQ6IA0KIGh0bWxfZG9jdW1lbnQ6DQogICB0b2M6IFRSVUUNCiAgIHRvY19mbG9hdDogVFJVRQ0KICAgY29kZV9kb3dubG9hZDogVFJVRQ0KICAgdGhlbWU6ICJsdW1lbiINCi0tLQ0KDQohW10oaHR0cHM6Ly9pLmdpZmVyLmNvbS9BRVo2LmdpZikNCg0KDQojIEluc3RhbGFyIHBhcXVldGVzIHkgbGxhbWFyIGxpYnJlcmlhcw0KYGBge3J9DQojaW5zdGFsbC5wYWNrYWdlcygidGlkeXZlcnNlIikgICNQYXF1ZXRlcyBwYXJhIG1hbmlwdWxhY2nDs24gDQpsaWJyYXJ5KHRpZHl2ZXJzZSkgDQpgYGANCg0KIyBBc2lnbmFyIHZhcmlhYmxlDQpgYGB7cn0NCnggPC0gMyAgDQp5IDwtIDINCmBgYA0KIyBJbXByaW1pciBlbCByZXN1bHRhZG8NCg0KYGBge3J9DQp4DQp5DQpgYGANCiNPcGVyYWNpb25lcyBhcml0bWV0aWNhcw0KDQpgYGB7cn0NCnN1bWEgPC0geCArIHkgDQpzdW1hDQoNCnJlc3RhIDwtIHggLSB5IA0KcmVzdGENCg0KbXVsdGlwbGljYWNpw7NuIDwtIHggKiB5IA0KbXVsdGlwbGljYWNpw7NuIA0KDQpkaXZpc2lvbiA8LSB4L3kgDQpkaXZpc2lvbg0KDQpkaXZpc2lvbl9lbnRlcmEgPC0geCAlLyUgeSANCmRpdmlzaW9uX2VudGVyYQ0KDQpyZXNpZHVvIDwtIHggJSUgeSANCnJlc2lkdW8NCg0KcG90ZW5jaWEgPC0geCAqKiAyIA0KcG90ZW5jaWENCg0KcG90ZW5jaWF5IDwtIHkgKiogMiANCnBvdGVuY2lheQ0KYGBgDQojIEZ1bmNpb25lcw0KDQpgYGB7cn0NCnJhaXpfY3VhZHJhZGEgPC0gc3FydCh4KSANCnJhaXpfY3VhZHJhZGENCg0KcmFpel9jdWJpY2EgPC0geCAqKiAoMS8zKSANCnJhaXpfY3ViaWNhDQoNCj9zcXJ0DQoNCmV4cG9uZW5jaWFsIDwtIGV4cCgxKSANCmV4cG9uZW5jaWFsDQoNCmFic29sdXRvIDwtIGFicyh4KSANCmFic29sdXRvDQoNCnNpZ25vIDwtIHNpZ24oeCkgIA0Kc2lnbm8NCg0KcmVkb25kZW9fYXJyaWJhIDwtIGNlaWxpbmcgKHgveSkgDQpyZWRvbmRlb19hcnJpYmENCg0KcmVkb25kZW9fYWJham8gPC0gZmxvb3IoeC95KQ0KcmVkb25kZW9fYWJham8NCg0KdHJ1bmNhciA8LSB0cnVuYyh4L3kpDQp0cnVuY2FyDQoNCmBgYA0KIyBDb25zdGFudGVzDQoNCmBgYHtyfQ0KcGkNCnJhZGlvIDwtIDUgDQphcmVhX2NpcmN1bG8gPC0gcGkqcmFkaW8qKjIgDQphcmVhX2NpcmN1bG8gDQpgYGANCiMgdmVjdG9yZXMNCg0KYGBge3J9DQphIDwtIGMoMTo1KSANCmEgDQoNCmIgPC0gc2VxKDEsMTAsIGJ5ID0gMC41KSANCmINCg0Kbm9tYnJlcyA8LSBjKCJKdWFuIiwgIkFuYSIsICJQZWRybyIsICJDYXJsYSIsICJTYXJhIikgDQpub21icmVzDQoNCmNhbGlmaWNhY2lvbmVzIDwtIGMoMTAwLDkwLDUwLDEwMCw2NSkgDQpjYWxpZmljYWNpb25lcyANCmBgYA0KIyBPdHJhcyBjb3Nhcw0KDQpgYGB7cn0NCmxvbmdpdHVkIDwtIGxlbmd0aChhKQ0KbG9uZ2l0dWQNCg0KcHJvbWVkaW8gPC0gbWVhbihjYWxpZmljYWNpb25lcykNCnByb21lZGlvDQoNCm9yZGVuX2FzY2VuZGVudGUgPC0gc29ydChjYWxpZmljYWNpb25lcykNCm9yZGVuX2FzY2VuZGVudGUNCg0Kb3JkZW5fZGVzY2VuZGVudGUgPC0gc29ydChjYWxpZmljYWNpb25lcywgZGVjcmVhc2luZyA9IFRSVUUpDQpvcmRlbl9kZXNjZW5kZW50ZQ0KYGBgDQojIFRhYmxhcw0KDQpgYGB7cn0NCnRhYmxhX2RlX2NhbGlmaWNhY2lvbmVzIDwtIGRhdGEuZnJhbWUobm9tYnJlcyxjYWxpZmljYWNpb25lcykgDQp0YWJsYV9kZV9jYWxpZmljYWNpb25lcyRlc3RhdHVzIDwtIGlmZWxzZSh0YWJsYV9kZV9jYWxpZmljYWNpb25lcyRjYWxpZmljYWNpb25lcyA+PSA3MCwgIkFwcm9iYWRvIiwiUmVwcm9iYWRvIikgDQpgYGANCiMgY29uZGljaW9uYWxlc18gSWd1YWwgPT0sIERlc2lndWFsICE9DQoNCmBgYHtyfQ0Kc3VtbWFyeSh0YWJsYV9kZV9jYWxpZmljYWNpb25lcykgDQpzdHIodGFibGFfZGVfY2FsaWZpY2FjaW9uZXMpDQpoZWFkKHRhYmxhX2RlX2NhbGlmaWNhY2lvbmVzKSANCnRhaWwodGFibGFfZGVfY2FsaWZpY2FjaW9uZXMpIA0KYGBgDQojIFNlbGVjdCBwYXJhIHNlbGNjaW9uYXIgY29sdW1uYXMNCg0KYGBge3J9DQpyZXN1bHRhZG9zIDwtIHNlbGVjdCh0YWJsYV9kZV9jYWxpZmljYWNpb25lcywgLWMobm9tYnJlcykpIA0KYGBgDQojIGZpbHRlciBwYXJhIGZpbHRyYXIgcmVuZ2xvbmVzDQoNCmBgYHtyfQ0KcmVzdWx0YWRvcyA8LSBmaWx0ZXIocmVzdWx0YWRvcywgZXN0YXR1cyA9PSAiQXByb2JhZG8iKSANCmBgYA0KIyBBY3RpdmlkYWQgMS4gQ2FsY3VsYWRvcmEgZGVsIElNQw0KDQpgYGB7cn0NCmFsdW1ubyA8LSBjKCJSYXVsIiwgIlJlbmF0YSIsICJKdWFuIiwgIlNlcmdpbyIsICJNZW1lIikgDQpwZXNvIDwtIGMoNzgsIDUyLCA3OCwgOTAsIDU2MCkgDQphbHR1cmEgPC0gYygxLjgwLCAxLjU1LCAxLjc1LCAxLjg2LCAxLjgwKSANCg0KdGFibGFfZGVfaW1jIDwtIGRhdGEuZnJhbWUoYWx1bW5vLHBlc28sYWx0dXJhKSAgIA0KdGFibGFfZGVfaW1jJElNQyA8LSB0YWJsYV9kZV9pbWMkcGVzbyAvIHRhYmxhX2RlX2ltYyRhbHR1cmEqKjIgDQoNCnRhYmxhX2RlX2ltYyRyZXN1bHRhZG8gPC0gaWZlbHNlKHRhYmxhX2RlX2ltYyRJTUMgPCAxOC41LCAiQmFqbyBQZXNvIiwgaWZlbHNlKHRhYmxhX2RlX2ltYyRJTUMgPD0gMjQuOSwgIlBlc28gTm9ybWFsIiwgaWZlbHNlKHRhYmxhX2RlX2ltYyRJTUMgPD0gMjkuOSwgIlNvYnJlcGVzbyIsICJvYmVzaWRhZCIpKSkNCmBgYA0KIyBHcmFmaWNhDQoNCmBgYHtyfQ0Kc2VtYW5hIDwtIGMoMToxMCkNCnZlbnRhcyA8LSBjKDE1MCwxNjAsMTY1LDE4MCwxNzUsMTkwLDIwMCwxOTUsMjEwLDIyMCkNCnBsb3Qoc2VtYW5hLCB2ZW50YXMsIHR5cGU9ICJsIiwgbWFpbj0gIlZlbnRhcyBzZW1hbmFsZXMgKEsgVVNEKSIpIA0KZGF0b3NfdmVudGFzIDwtIGRhdGEuZnJhbWUoc2VtYW5hLCB2ZW50YXMpDQpyZWdyZXNpb24gPC0gbG0odmVudGFzIH4gc2VtYW5hLCBkYXRhPWRhdG9zX3ZlbnRhcykNCnN1bW1hcnkocmVncmVzaW9uKQ0KZGF0b3NfbnVldm9zIDwtIGRhdGEuZnJhbWUoc2VtYW5hPTExOjIwKQ0KcHJlZGljY2lvbiA8LSBwcmVkaWN0KHJlZ3Jlc2lvbiwgZGF0b3NfbnVldm9zKQ0KcHJlZGljY2lvbiANCmBgYA0KDQojIyBDb25jbHVzacOzbg0KRW4gZXN0YSBhY3RpdmlkYWQsIGluaWNpw6kgY2FyZ2FuZG8gZWwgcGFxdWV0ZSB0aWR5dmVyc2UgcGFyYSBwb2RlciBtYW5lamFyIG1lam9yIGxhIGluZm9ybWFjacOzbiBlbiBSLiBMdWVnbywgZGVjbGFyw6kgdW4gcGFyIGRlIHZhcmlhYmxlcyB5IHJlYWxpY8OpIG9wZXJhY2lvbmVzIGFyaXRtw6l0aWNhcyBiw6FzaWNhcyBjb21vIHN1bWFzLCByZXN0YXMsIG11bHRpcGxpY2FjaW9uZXMgeSBkaXZpc2lvbmVzLiANCg0KRGVzcHXDqXMsIGNyZWFtb3MgdmVjdG9yZXMgeSByZWFsaWPDqSB2YXJpYXMgb3BlcmFjaW9uZXMsIGNvbW8gdmVyIHN1IGxvbmdpdHVkLCBjYWxjdWxhciB1biBwcm9tZWRpbyB5IG9yZGVuYXIgZGF0b3MgZW4gZm9ybWEgYXNjZW5kZW50ZSBvIGRlc2NlbmRlbnRlLiBBZGVtw6FzLCB0cmFiYWrDqSBjb24gdGFibGFzIGRlIGRhdG9zLCBhZ3JlZ2FuZG8gY29sdW1uYXMgY29uIGNhbGlmaWNhY2lvbmVzIHkgZXRpcXVldGFzIGRlIGFwcm9iYWNpw7NuIG8gcmVwcm9iYWNpw7NuLiBQYXJhIGV4cGVyaW1lbnRhciBjb24gZWwgdGVtYSBkZSBmaWx0cm9zIHkgc2VsZWNjacOzbiBkZSBjb2x1bW5hcywgdXRpbGljw6kgbGFzIGZ1bmNpb25lcyBzZWxlY3QgeSBmaWx0ZXIuDQoNClRhbWJpw6luIHByYWN0aXF1w6kgY29uIHVuYSBwZXF1ZcOxYSBjYWxjdWxhZG9yYSBkZSBJTUMgcXVlIGNsYXNpZmljYSBhIGNhZGEgcGVyc29uYSBzZWfDum4gc3UgcGVzbyB5IGFsdHVyYS4gUGFyYSB0ZXJtaW5hciwgZ3JhZmljYXIgbG9zIHZhbG9yZXMgZGUgdmVudGFzIHNlbWFuYWxlcyB5IGdlbmVyYXIgdW5hIHJlZ3Jlc2nDs24gbGluZWFsLg==