<- 1:50
v1_50 print(v1_50)
PRIA practica 1 (Resuelta): RBase, Vectores, matrices y factores
1. Vectores
1.1 Genera un vector con los números del 1 al 50 con 1:50 y guárdalo en una variable v1_50. Repítelo usando seq().
# con seq()
<- seq(1,50)
v1_50 print(v1_50)
1.2 Lo mismo que el anterior pero con incrementos de 0.5 {0.5,1,1.5, … 10} en la variable v1_50h (usa “by”).
<- seq(1,50,by=0.5)
v1_50h print(v1_50h)
1.3 Calcula el tamaño del vector anterior y guárdalo en tam_v1_50h.
<- length(v1_50h)
tam_v1_50h print(tam_v1_50h)
1.4 Describe el tipo de dato que devuelve la función length aplicada sobre tam_v1_50h
<- class(tam_v1_50h)
tipo_length print(tipo_length)
print(typeof(tam_v1_50h))
# Diferencia entre typeof y class.
# typeof devuelve el tipo según la implementación interna y cómo se respresenta en memoria el objeto
# class está orientada al comportamiento de la función según el objeto
# Por ejemplo,
class(data.frame(a=c(1,2), b=c(3,4))) #, genera un objeto data.frame (clase). Sin embargo, R implementa un data frame como un tipo especial de lista, por eso si llamamos a
typeof(data.frame(a=c(1,2), b=c(3,4)))# , devuelve una lista.
1.5 Genera un vector de 10 elementos comprendidos entre 1 y 22 con incrementos iguales.
<- seq(1,22,length=10)
v1_22_10 print(v1_22_10)
1.6 vrep_1x4 <- Genera un vector de unos de tamaño 4 usando rep().
<- rep(1,4)
vrep_1x4 # vrep_1x4 <- rep(1, times=4) También válido
print(vrep_1x4)
1.7 vrep <- Genera un vector que cuente 3 veces del 1 al 5 usando rep() y sin usar seq().
<- rep(1:5,3)
vrep #vrep <- rep(1:5, times=3) También válido
#vrep <- rep(1:5, each=3) --> Esta opción no es correcta
print(vrep)
1.8 Crea un vector con los elementos del 1º a 4º y de 8º a 9º de v1_22_10.
<- c(v1_22_10[1:4],v1_22_10[8:9])
sub_v1_22_10 print(sub_v1_22_10)
2. Matrices
2.1 Construye una matriz de 3 filas que contenga los números del 1 al 9 ordenados por filas. \(\begin{pmatrix}1&2&3\\4&5&6\\7&8&9\end{pmatrix}\)
matrix(1:9, byrow = TRUE, nrow = 3)
2.2 Construye una matriz de 3 filas que contenga los números del 1 al 9 ordenados por columnas. \(\begin{pmatrix}1 & 4 & 7\\2 & 5 & 8\\3 & 6 & 9\end{pmatrix}\)
matrix(1:9, byrow = FALSE, nrow = 3)
2.3 Los siguientes vectores representan la recaudación en euros, el número de semanas en cartelera y la recaudación total de ciertas películas en los cines españoles durante. Fuente. PDF
<- c(702465, 1, 702465)
the_creator <- c(61351, 11, 33935231)
barbie <- c(235394, 7, 1732961) campeonesx
Crea una matriz de 9 elemenos concatenando los 3 vectores cuyas filas correspondan a cada película y las columnas tengan el mismo significado que los respectivos vectores. Guarda la matriz en la variable cine_29_01_oct
<- matrix((c(the_creator, barbie, campeonesx)), nrow = 3, byrow = TRUE)
cine_29_01_oct cine_29_01_oct
2.4 Usa las funciones typeof y class, pasándole como argumento la matriz. Vuelve a usarlas pero pasándole cine_29_01_oct[1,1]
typeof(cine_29_01_oct)
class(cine_29_01_oct)
typeof(cine_29_01_oct[1,1])
class(cine_29_01_oct[1,1])
2.5 Teniendo en cuenta los datos de los vectores del ejercicio 2.3:
Crea un vector con el significado de las columnas (rec_semana, semanas_cart, rec_total). Crea un vector con los nombres de las tres películas. Usa los vectores creados y a continuación utilizalos para nombrar las columnas y las filas de la matriz. Busca las dos funciones en R que permiten poner nombre a filas y columnas. Imprime ahora la matriz cine_29_01_oct con los nombres de filas y columnas asignados.
<- c("rec_semana", "semanas_cart", "rec_total")
columnas
<- c("the_creator", "barbie", "campeonesx")
filas
# Nombra las filas y columnas de la matriz
rownames(cine_29_01_oct) <- filas
colnames(cine_29_01_oct) <- columnas
cine_29_01_oct
2.6 Agrega una nueva columna a la matriz cine_29_01_oct, con el % de recaudación de la semana actual sobre el total.
# Código para calcular y agregar la nueva columna
<- 100*cine_29_01_oct[, "rec_semana"]/cine_29_01_oct[, "rec_total"]
perc_sem
perc_sem<- cbind(cine_29_01_oct, perc_sem)
cine_29_01_oct cine_29_01_oct
2.7 Localiza en la fuente de datos dos películas que estén en cartelera 2 semanas. Repite los pasos anteriores. ¿Cómo varía la recaudación de segunda semana respecto a la primera?
# Código para crear la nueva matriz
<- c(67529, 2, 246146)
Cerrar_los_Ojos <- c(87, 2, 723)
Mision_a_Marte <- matrix((c(Cerrar_los_Ojos, Mision_a_Marte)), nrow = 2, byrow = TRUE)
cine_2_sem colnames(cine_2_sem) <- columnas
rownames(cine_2_sem) <- c("Cerrar los Ojos", "Mision a Marte")
<- 100*cine_2_sem[, "rec_semana"]/cine_2_sem[, "rec_total"]
perc_sem <- cbind(cine_2_sem, perc_sem)
cine_2_sem cine_2_sem
<- 100-(100*(cine_2_sem[, "rec_semana"])/(cine_2_sem[, "rec_total"] - cine_2_sem[, "rec_semana"]))
caida_2_sem caida_2_sem
2.8 Une las primera matriz con la segunda por filas
<- rbind(cine_29_01_oct, cine_2_sem)
ambas ambas
3. Factores
3.1 Tenemos el vector c(“Elefante”, “Girafa”, “Asno”, “Caballo”), obtén a partir de éste el vector de variables cualitativas
<- c("Elephant", "Giraffe", "Donkey", "Horse")
animals_vector <- factor(animals_vector)
factor_animals_vector factor_animals_vector
3.2 A partir del vector c(“High”, “Low”, “High”,“Low”, “Medium”), utiliza los niveles c(“Low”, “Medium”, “High”), aplica orden y guárdalo en el vector factor_temperature_vector
<- c("High", "Low", "High","Low", "Medium")
temperature_vector <- factor(temperature_vector, order = TRUE,
factor_temperature_vector levels = c("Low", "Medium", "High"))
factor_temperature_vector
3.3 Aplica la función summary() a temperature_vector y factor_temperature_vector ¿Podrías explicar los resultados?
summary(temperature_vector)
summary(factor_temperature_vector)
Al convertir en factor, la función summary realiza el resumen estadístico, teniendo en cuenta que son variables categóricas