Este documento esta publicado en https://rpubs.com/psantizo/1179508
colores_primarios <- c("rojo", "amarillo", "azul")
arreglo_aleatorio <- sample(colores_primarios, 250, replace = TRUE)
# Se imprimen los primeros 50 elementos del arreglo
print(arreglo_aleatorio[1:50])
## [1] "rojo" "rojo" "rojo" "amarillo" "azul" "rojo"
## [7] "rojo" "rojo" "amarillo" "azul" "azul" "azul"
## [13] "rojo" "amarillo" "azul" "amarillo" "azul" "amarillo"
## [19] "rojo" "amarillo" "amarillo" "azul" "amarillo" "azul"
## [25] "rojo" "azul" "azul" "azul" "amarillo" "rojo"
## [31] "rojo" "azul" "rojo" "amarillo" "azul" "amarillo"
## [37] "amarillo" "rojo" "azul" "rojo" "amarillo" "azul"
## [43] "rojo" "amarillo" "amarillo" "amarillo" "rojo" "rojo"
## [49] "azul" "azul"
# Se crear un arreglo aleatorio con números enteros entre 40 y 70
arreglo_uniforme <- sample(40:70, 120000, replace = TRUE)
print("Primeros 10 elementos del arreglo")
## [1] "Primeros 10 elementos del arreglo"
print(arreglo_uniforme[1:10])
## [1] 70 69 54 54 51 70 52 63 54 56
# hacer un subconjunto filtrando los números mayores a 55 y menores a 64
num_54_64 <- arreglo_uniforme[which(arreglo_uniforme > 54 & arreglo_uniforme < 64)]
print("Filtrando los números mayores a 54 y menores a 64, sus primeros 10 elementos son")
## [1] "Filtrando los números mayores a 54 y menores a 64, sus primeros 10 elementos son"
print(num_54_64[1:10])
## [1] 63 56 59 55 55 56 59 60 59 58
sd_54_64 <- sd(num_54_64)
print(paste("La desviación estándar es", round(sd_54_64,2), sep=" "))
## [1] "La desviación estándar es 2.59"
# para el ejemplo se crea un arreglo aleatorio de carnes
cantidad_carnets <- 5000
anio_inicial <- 2001
anio_final <- 2023
anios <- substr(sample(anio_inicial:anio_final, cantidad_carnets, replace = TRUE),3,4)
print("Los primeros 10 elementos del arreglo aleatorio de los anios son")
## [1] "Los primeros 10 elementos del arreglo aleatorio de los anios son"
print(anios[1:10])
## [1] "10" "23" "13" "02" "08" "23" "13" "09" "14" "22"
# se generan los numeros sin remplazo para que no se repitan
numeros_aleatorios <- sample(10000:99999, cantidad_carnets, replace = FALSE)
# se crean los carnets
carnets_aleatorios <- paste0(anios, numeros_aleatorios)
print("Los primeros 10 elementos del arreglo aleatorio de los carnets son")
## [1] "Los primeros 10 elementos del arreglo aleatorio de los carnets son"
print(carnets_aleatorios[1:10])
## [1] "1058276" "2373370" "1379433" "0261830" "0841961" "2379353" "1336881"
## [8] "0918180" "1454240" "2245543"
# Se realiza el análisis:
## Se filtra el los primeros dos dígitos que indica el anio
anio_de_ingreso <- substr(carnets_aleatorios, 1, 2)
# Se crea una tabla que cuenta la cantidad de alumnos por anio
cantidad_alumnos <- table(anio_de_ingreso)
print("La cantidad de alumnos por anio son:")
## [1] "La cantidad de alumnos por anio son:"
print(cantidad_alumnos)
## anio_de_ingreso
## 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20
## 215 212 241 207 212 230 211 217 180 212 220 231 225 205 209 216 257 233 200 209
## 21 22 23
## 215 193 250
print("La primera fila indica el anio y la segunda el número de alumnos por anio")
## [1] "La primera fila indica el anio y la segunda el número de alumnos por anio"
#Crean el vector de forma manual
y <- c(1,3,5,7)
print(y)
## [1] 1 3 5 7
# Crear el vector con la funcion seq()
y <- seq(1,7,2)
print(y)
## [1] 1 3 5 7
#Se define b
b <- list(a=1:10, c="Hola", d="XX")
# se remueven los valores de la lista b
b$a <- b$a[-c(4, 6,7,8)]
b
## $a
## [1] 1 2 3 5 9 10
##
## $c
## [1] "Hola"
##
## $d
## [1] "XX"
# Los vectores son
x <- c(8,7,6,5)
y <- c(3,3, 3, 3, 3, 3, 3, 3, 2, 2)
z <- c(1, 1.75, 2.5, 3.25, 4)
# Medias
mean_x <- mean(x)
mean_y <- mean(y)
mean_z <- mean(z)
#Desviacion estándar
sd_x <- sd(x)
sd_y <- sd(y)
sd_z <- sd(z)
#mediana
median_x <- median(x)
median_y <- median(y)
median_z <- median(z)
#moda
mode_x <- as.numeric(names(which.max(table(z))))
mode_y <- as.numeric(names(which.max(table(y))))
mode_z <- as.numeric(names(which.max(table(z))))
# suma
sum_x <- sum(x)
sum_y <- sum(y)
sum_z <- sum(z)
Para el vector x su media es 6.5, su desviación estándar 1.29, su mediana 6.5,para la moda ningun valor se repite, y la suma del vector es 26
Para el vector y su media es 2.8, su desviación estándar 0.42, su mediana 3, su moda 3, y la suma del vector es 28
Para el vector z su media es 2.5, su desviación estándar 1.19, su mediana 2.5,para la moda ningun valor se repite, y la suma del vector es 12.5
x <- c(1, 2, 3, 4, 5, 6)
y <- c(7, 8)
z <- c(9, 10, 11, 12)
# a. x + x
print(x+x)
## [1] 2 4 6 8 10 12
#b. x+y
print(x+y)
## [1] 8 10 10 12 12 14
#c. responda que ha hecho R
# R creo tranformo el vector y de la misma longitud que el de x de la forma>
yy <- c(y,y,y)
print(yy)
## [1] 7 8 7 8 7 8
# posteriormente sumo los vectores
print(x+yy)
## [1] 8 10 10 12 12 14
string <- "Hola Mundo"
# se hace split con espacio
split_str <- strsplit(string, " ")[[1]]
# se incluyen los elementos en una lista
lista_str <- list(split_str[1],split_str[2])
lista_str
## [[1]]
## [1] "Hola"
##
## [[2]]
## [1] "Mundo"
Para entregar este ejercicio deberá subir un archivo .R con la pregunta en forma de comentario, el código que generó y su respuesta como comentario. Esta ejercicio requerirá un poco de investigación, no puede utilizar ninguna otra cosa que no se le haya enseñado en clase como librerías, funciones y demás, utilice la menor cantidad de líneas posible (1 línea idealmente), NO puede utilizar ninguna estructura de control de flujo (ciclos y condicionales). Antes de realizar este ejercicio limpie el Entorno de variales que ha construido hasta ahora, cargue el archivo data.Rdata en RStudio. Al cargarlo notará que existe una única variable llamada info_estidiantes, para dicha variable responda la siguientes preguntas:
Se limpia el entorno y se carga la información
rm(list = ls())
graphics.off()
load("C:/Users/joshp/Desktop/Lab1/data.RData")
typeof(info_estudiantes)
## [1] "list"
# El tipo de datos es una lista
length(info_estudiantes)
## [1] 3
# Es una lista con 3 elementos, cada elemento de la lista puede contener un vector o una lista.
str(info_estudiantes)
## List of 3
## $ carnet : chr [1:8000] "17009555" "17001626" "18004745" "19002855" ...
## $ promedio: int [1:8000] 65 89 88 68 90 79 71 52 97 92 ...
## $ tipo : Factor w/ 4 levels "A","B","C","D": 4 1 1 3 1 1 3 3 3 4 ...
# La lista contiene en el primer objeto con tipo carácter números de carnet, en el segundo promedio, y en el tercero un tipo A,B,C o D, para cada carnet.
# vector con los promedio de los estudiantes del 2019
promedio_19 <- mean(info_estudiantes$promedio[substr(info_estudiantes$carnet,1,2)== "19"])
print(paste("El promedio de los estudiantes ingresados en el anio 2019 es de", round(promedio_19,2),sep=" "))
## [1] "El promedio de los estudiantes ingresados en el anio 2019 es de 70.86"
# vector con los promedio de los estudiantes del 2019
sd_16<- sd(info_estudiantes$promedio[substr(info_estudiantes$carnet,1,2)== "16"])
sd_18<- sd(info_estudiantes$promedio[substr(info_estudiantes$carnet,1,2)== "18"])
suma_sd <- round(sd_16 + sd_18,2)
print(paste("La desviacion estandar de los estudiantes que ingresaron en el 2016 es de",round(sd_16,2),sep=" "))
## [1] "La desviacion estandar de los estudiantes que ingresaron en el 2016 es de 17.37"
print(paste("La desviacion estandar de los estudiantes que ingresaron en el 2018 es de",round(sd_18,2),sep=" "))
## [1] "La desviacion estandar de los estudiantes que ingresaron en el 2018 es de 17.76"
print(paste("La suma es ", suma_sd))
## [1] "La suma es 35.13"
# Se filtran los carnets que terminan en los numeros de 45 a 48.
# luego se obtiene el valor minimo
min_45_48 <- min(info_estudiantes$promedio[substr(info_estudiantes$carnet,7,8) %in% c("45","46","47","48")])
print(paste("la nota minima de los estudiantes donde su carnet termina con los numero 45 a 48 es de ", min_45_48))
## [1] "la nota minima de los estudiantes donde su carnet termina con los numero 45 a 48 es de 40"
# se obtienen los estudiantes tipo A, sus notas y los que obtuvieron notas mayorse a 85
est_A <- length(info_estudiantes$promedio[info_estudiantes$tipo== "A"])
notas_A <- info_estudiantes$promedio[info_estudiantes$tipo== "A"]
mayor_85 <- notas_A[notas_A>= 85]
prob_A <- length(mayor_85)/length(notas_A)
print(paste("La probabiliad de un estudiante tipo A tenga nota mayor a 85 es de ",round(prob_A,3)))
## [1] "La probabiliad de un estudiante tipo A tenga nota mayor a 85 es de 0.267"
# se obtienen los estudiantes tipo c
est_C <- length(info_estudiantes$promedio[info_estudiantes$tipo== "C"])
anio_C <- substr(info_estudiantes$carnet[info_estudiantes$tipo== "C"],1,2)
anio_17_o_19 <- anio_C[anio_C %in%c("17","19")]
prob_C <- length(anio_17_o_19)/length(anio_C)
print(paste("La probabiliad de un estudiante tipo C haya ingresado ene l anio 2017 o 2019 es de ",round(prob_C,3)))
## [1] "La probabiliad de un estudiante tipo C haya ingresado ene l anio 2017 o 2019 es de 0.497"