Para esta y la siguiente parte deberá subir su solución en un archivo .R colocando la pregunta completa como comentario y su respuesta que considere adecuada.
Escriba el código de R necesario para resolver los siguientes incisos trate de usar la menor cantidad de líneas posible.
# Definir los colores primarios
colores_primarios <- c("rojo", "azul", "amarillo")
# Generar un arreglo aleatorio de 250 elementos con los colores primarios
arreglo_aleatorio <- sample(colores_primarios, 250, replace = TRUE)
# Mostrar el arreglo resultante
arreglo_aleatorio
## [1] "azul" "azul" "rojo" "azul" "azul" "azul"
## [7] "rojo" "rojo" "rojo" "azul" "rojo" "amarillo"
## [13] "rojo" "rojo" "azul" "rojo" "azul" "azul"
## [19] "azul" "rojo" "rojo" "rojo" "rojo" "rojo"
## [25] "rojo" "amarillo" "rojo" "amarillo" "rojo" "azul"
## [31] "azul" "azul" "azul" "rojo" "amarillo" "rojo"
## [37] "amarillo" "amarillo" "amarillo" "azul" "rojo" "rojo"
## [43] "azul" "amarillo" "rojo" "azul" "rojo" "rojo"
## [49] "azul" "rojo" "amarillo" "amarillo" "azul" "azul"
## [55] "rojo" "azul" "azul" "rojo" "rojo" "azul"
## [61] "amarillo" "amarillo" "amarillo" "amarillo" "amarillo" "azul"
## [67] "azul" "rojo" "amarillo" "rojo" "azul" "rojo"
## [73] "azul" "amarillo" "azul" "azul" "rojo" "azul"
## [79] "azul" "amarillo" "rojo" "rojo" "amarillo" "azul"
## [85] "azul" "amarillo" "amarillo" "rojo" "azul" "azul"
## [91] "rojo" "amarillo" "rojo" "rojo" "amarillo" "amarillo"
## [97] "azul" "rojo" "rojo" "rojo" "azul" "rojo"
## [103] "rojo" "amarillo" "amarillo" "azul" "rojo" "rojo"
## [109] "rojo" "rojo" "amarillo" "azul" "azul" "azul"
## [115] "amarillo" "amarillo" "azul" "amarillo" "amarillo" "amarillo"
## [121] "rojo" "amarillo" "azul" "rojo" "amarillo" "amarillo"
## [127] "amarillo" "amarillo" "azul" "rojo" "rojo" "rojo"
## [133] "rojo" "amarillo" "rojo" "azul" "amarillo" "azul"
## [139] "rojo" "rojo" "azul" "amarillo" "rojo" "amarillo"
## [145] "rojo" "azul" "azul" "azul" "rojo" "azul"
## [151] "azul" "rojo" "rojo" "rojo" "azul" "azul"
## [157] "azul" "azul" "amarillo" "amarillo" "azul" "rojo"
## [163] "azul" "amarillo" "rojo" "amarillo" "amarillo" "azul"
## [169] "azul" "amarillo" "azul" "rojo" "rojo" "azul"
## [175] "azul" "azul" "rojo" "azul" "amarillo" "azul"
## [181] "amarillo" "amarillo" "amarillo" "rojo" "amarillo" "rojo"
## [187] "amarillo" "rojo" "rojo" "azul" "amarillo" "amarillo"
## [193] "rojo" "amarillo" "amarillo" "azul" "azul" "azul"
## [199] "azul" "azul" "amarillo" "azul" "azul" "rojo"
## [205] "rojo" "azul" "rojo" "amarillo" "rojo" "rojo"
## [211] "rojo" "rojo" "rojo" "rojo" "azul" "azul"
## [217] "rojo" "azul" "amarillo" "amarillo" "rojo" "amarillo"
## [223] "amarillo" "rojo" "azul" "rojo" "amarillo" "amarillo"
## [229] "amarillo" "amarillo" "rojo" "amarillo" "azul" "azul"
## [235] "azul" "amarillo" "azul" "amarillo" "rojo" "azul"
## [241] "rojo" "rojo" "amarillo" "azul" "rojo" "azul"
## [247] "azul" "rojo" "amarillo" "rojo"
# Generar el arreglo de 120,000 elementos de números enteros entre 40 y 70
arreglo <- sample(40:70, 120000, replace = TRUE)
# Filtrar los números que son mayores a 55 y menores a 64
numeros_filtrados <- arreglo[arreglo > 55 & arreglo < 64]
# Calcular la desviación estándar de los números filtrados
desviacion_estandar <- sd(numeros_filtrados)
# Mostrar la desviación estándar
desviacion_estandar
## [1] 2.292896
# Tamano de la muestra
n <-2500
# Generar muestra de carnets
ids<-as.integer(runif(n, min=1000, max=9999))
anio<-sample(c(1700, 1800, 1900, 2000, 2100, 2200, 2300, 2400), n, replace = TRUE)
carnets<-paste(anio, ids, sep='')
# Extraer los primeros dos dígitos (año) de cada número de carnet
anio_de_ingreso <- substr(carnets, 1, 2)
# Contar la cantidad de alumnos por año
cantidad_por_anio <- table(anio_de_ingreso)
# Mostrar el resultado
cantidad_por_anio
## anio_de_ingreso
## 17 18 19 20 21 22 23 24
## 327 321 316 307 314 292 337 286
# Definir vector con seq
y <- seq(from = 1, to = 7, by = 2)
y
## [1] 1 3 5 7
# Definir la lista b
b <- list(a = 1:10, c = "Hola", d = "XX")
# Crear un nuevo vector a con los elementos 4, 6, 7 y 8 del vector original
nuevo_a <- b$a[-c(4, 6, 7, 8)]
# Actualizar la lista b con el nuevo vector a
b$a <- nuevo_a
# Mostrar la lista b modificada
b
## $a
## [1] 1 2 3 5 9 10
##
## $c
## [1] "Hola"
##
## $d
## [1] "XX"
# Definir vectores
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)
# Generar una lista
variables = list(x= x, y= y, z = z)
for (i in 1:length(variables)) {
n <- names(variables)[i]
media <- mean(variables[[i]])
sdt <- sd(variables[[i]])
mediana <- median(variables[[i]])
moda <- n[which.max(table(n))]
longitud <- length(variables[[i]])
print("******************************")
print(paste("Variable ------>", n))
print(paste("Media:", media))
print(paste("Desviacion estandar:", sdt))
print(paste("Mediana:", mediana))
print(paste("Moda:", moda))
print(paste("Tamano:", longitud ))
print("******************************")
}
## [1] "******************************"
## [1] "Variable ------> x"
## [1] "Media: 6.5"
## [1] "Desviacion estandar: 1.29099444873581"
## [1] "Mediana: 6.5"
## [1] "Moda: x"
## [1] "Tamano: 4"
## [1] "******************************"
## [1] "******************************"
## [1] "Variable ------> y"
## [1] "Media: 2.8"
## [1] "Desviacion estandar: 0.421637021355784"
## [1] "Mediana: 3"
## [1] "Moda: y"
## [1] "Tamano: 10"
## [1] "******************************"
## [1] "******************************"
## [1] "Variable ------> z"
## [1] "Media: 2.5"
## [1] "Desviacion estandar: 1.18585412256314"
## [1] "Mediana: 2.5"
## [1] "Moda: z"
## [1] "Tamano: 5"
## [1] "******************************"
# Definir los vectores
x <- c(1, 2, 3, 4, 5, 6)
y <- c(7, 8)
z <- c(9, 10, 11, 12)
# a. x + x
resultado_a <- x + x
print(resultado_a)
## [1] 2 4 6 8 10 12
# b. x + y
resultado_b <- x + y
print(resultado_b)
## [1] 8 10 10 12 12 14
Lo que ha hecho R es reciclar los valores del vector más corto para que coincida con la longitud del vector más largo.
[[1]] [1] “Hola” [[2]] [1] “Mundo”
# Definir string
cadena <- "Hola Mundo"
# Usar strsplit para dividir la cadena en subcadenas por espacio
resultado <- strsplit(cadena, " ")[[1]]
# Mostrar la salida con el formato deseado
for (i in 1:length(resultado)) {
print(paste("[[", i, "]]", sep = ""))
print(resultado[i])
}
## [1] "[[1]]"
## [1] "Hola"
## [1] "[[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. //
Cargar los datos
ruta <- 'C:/Users/halegre/Documents/Heberto/galileo/data.RData'
df <- load("data.RData")
View(df)
Al cargarlo notará que existe una única variable llamada info_estidiantes, para dicha variable responda la siguientes preguntas:
# Seleccionar la variable
class(info_estudiantes)
## [1] "list"
# Determinar largo de la variable
length(info_estudiantes)
## [1] 3
names(info_estudiantes)
## [1] "carnet" "promedio" "tipo"
round(mean(info_estudiantes$promedio[substr(info_estudiantes$carnet, 1, 2)==19]),1)
## [1] 70.9
sd(info_estudiantes$promedio[substr(info_estudiantes$carnet, 1, 2) == 16]) + sd(info_estudiantes$promedio[substr(info_estudiantes$carnet, 1, 2) == 18])
## [1] 35.13241
min(info_estudiantes$promedio[((substr(info_estudiantes$carnet, 7, 8) >= 45)&(substr(info_estudiantes$carnet, 7, 8) <= 48))])
## [1] 40
round(length(info_estudiantes$promedio[(info_estudiantes$tipo=='A')&(info_estudiantes$promedio>85)])/length(info_estudiantes$promedio[info_estudiantes$tipo=='A']),2)
## [1] 0.25
round(length(info_estudiantes$carnet[(substr(info_estudiantes$carnet, 1, 2) == 17)|(substr(info_estudiantes$carnet, 1, 2) == 19)&(info_estudiantes$tipo=='C')])/length(info_estudiantes$carnet[(substr(info_estudiantes$carnet, 1, 2) == 17)|(substr(info_estudiantes$carnet, 1, 2) == 19)]),2)
## [1] 0.63