¿Que es una matriz? Conjunto de elementos del mismo tipo acomodados en numero de columnas y filas. Se utiliza mtrix().El segundo argumneto byrow indica que la matriz se llena por las filas (TRUE) aunque tambien se puede acomodar por columna (FALSE). El tercer argumento nrow indica el numero de columnas que debera tener la matriz.
matrix(1:9,byrow=TRUE,nrow=3)
## [,1] [,2] [,3]
## [1,] 1 2 3
## [2,] 4 5 6
## [3,] 7 8 9
La matrix anterior se acomodo conforme a dilas, ahora se acomodaran por columnas.
matrix(1:9,byrow=FALSE,nrow=3)
## [,1] [,2] [,3]
## [1,] 1 4 7
## [2,] 2 5 8
## [3,] 3 6 9
VECTORES, MATRICES Y DATA.FRAME:Matriz
new_hope<-c(460.998,314.4)
empire_strikes<-c(290.475,247.900)
return_jedi<-c(309.306,165.8)
box_office<-c(new_hope,empire_strikes,return_jedi)
box_office
## [1] 460.998 314.400 290.475 247.900 309.306 165.800
Construya una matriz con 3 filas, donde cada fila represente una película. Use la funcion trix()para realizarlo.
star_wars_matrix<-matrix(box_office,byrow=TRUE,nrow=3)
Para nombrar las filas y las columnas:
region<-c("US","non-US")
titles<-c("A New Hope","The Empire Strikes Back","Return of the Jedi")
rownames(star_wars_matrix)<-titles
colnames(star_wars_matrix)<-region
star_wars_matrix
## US non-US
## A New Hope 460.998 314.4
## The Empire Strikes Back 290.475 247.9
## Return of the Jedi 309.306 165.8
¿Como se haria para obtener un dato preciso de su matriz, es decir, mediante codigo decir cuanto gano return of the jedi en US?
star_wars_matrix[3,1]<-409
star_wars_matrix
## US non-US
## A New Hope 460.998 314.4
## The Empire Strikes Back 290.475 247.9
## Return of the Jedi 409.000 165.8
FACTORES Se refiere a un tipo de dato estadistico para almacenar en variables categoricas. La variable categorica pertenece a un numero limitado de categorias y la continua puede corresponder a un numero infinito de valores. Se utiliza la funcion factor().Primero se crea un vector que contenga una variabe categorica.
vector_sexo<-c("Male","Female","Female","Male","Male")
vector_sexo
## [1] "Male" "Female" "Female" "Male" "Male"
factor_sexo<-factor(vector_sexo)
factor_sexo
## [1] Male Female Female Male Male
## Levels: Female Male
Variable nominal: Sexo Variable ordinal: Temperatura
FACTORES - NIVELES DE FACTORES Para cambiar el orden l nombre de los niveles se utiliza levels(). La estructura es: Levels(facto_levels)
class(factor_sexo)
## [1] "factor"
factor_vector_sexo<-factor(vector_sexo)
levels(factor_vector_sexo)<-c("Male","Female")
factor_vector_sexo
## [1] Female Male Male Female Female
## Levels: Male Female
Un grupo de estudiantes de salud publica encuesto a 11 personas de entre 20 y 24 años para conocer su condicion general de salud, segun su percepcion personal. Se les pidio clasificar su estado de salud en una de las siguientes tres categorias: Buena, Regular y Mala. Las respuestas obtenidas, en el mismo orden en que se recopilaron fueron: buena, buena, regular, mala, buena, regular, mala, regular, buena, regular, mala. 1. Crear vector con las respuestad de los jovenes. 2. Convierta el vector a un factor, asigne un nombre y aplique summary. 3. Convierta el vector en un factor ordenado donde los niveles sean buena, regular y mala, asigne el nombre y aplique summary. 4. Indicar diferencias.
young_ans<-c("buena","buena","regular","mala","buena","regular","mala","regular","buena","regular","mala")
young_ans
## [1] "buena" "buena" "regular" "mala" "buena" "regular" "mala"
## [8] "regular" "buena" "regular" "mala"
factor_ans<-factor(young_ans)
summary(factor_ans)
## buena mala regular
## 4 3 4
fact_ans<-factor(factor_ans,ordered=TRUE,levels=c("buena","regular","mala"))
fact_ans
## [1] buena buena regular mala buena regular mala regular buena
## [10] regular mala
## Levels: buena < regular < mala
summary(fact_ans)
## buena regular mala
## 4 4 3
Factores_Niveles de factores Encontramos una nuvea aplicacion para el comando summary() Esta funcion nos indica el numero total de cada uno de los niveles. Otras funciones son tail(), head() y str().
Actividad: Se recabo informacion sobre salud mental de alumnos. Realizar vectores (3) y seguir las instrucciones.
nombres<-c("Marcel","Surya","Alam","Enrique","Eddy","Cesar","Jany","Yubi","Noelia")
edad<-c(26,32,31,27,35,35,29,24,39)
estres<-c("Alto","Moderado","Bajo","Alto","Moderado","Bajo","Alto","Moderado","Alto")
estres_factor<-factor(estres)
vector_estres_vector<-cbind(nombres,edad,estres)
vector_estres_vector
## nombres edad estres
## [1,] "Marcel" "26" "Alto"
## [2,] "Surya" "32" "Moderado"
## [3,] "Alam" "31" "Bajo"
## [4,] "Enrique" "27" "Alto"
## [5,] "Eddy" "35" "Moderado"
## [6,] "Cesar" "35" "Bajo"
## [7,] "Jany" "29" "Alto"
## [8,] "Yubi" "24" "Moderado"
## [9,] "Noelia" "39" "Alto"
summary(estres_factor)
## Alto Bajo Moderado
## 4 2 3
Hay que cambiar un dato entonces escribimos: data[#Fila,#Columna]<-dato real data es el nombre de tu base
vector_estres_vector[6,3]<-"Alto"
vector_estres_vector
## nombres edad estres
## [1,] "Marcel" "26" "Alto"
## [2,] "Surya" "32" "Moderado"
## [3,] "Alam" "31" "Bajo"
## [4,] "Enrique" "27" "Alto"
## [5,] "Eddy" "35" "Moderado"
## [6,] "Cesar" "35" "Alto"
## [7,] "Jany" "29" "Alto"
## [8,] "Yubi" "24" "Moderado"
## [9,] "Noelia" "39" "Alto"
Data.Frame Es una estructura de datos bidimensional (como una tabla) que almacena datos en filas y columnas. Para acceder a una variable dentro de un data.frame se utiliza signo \(, ejemplo:data_frame\)edad data.frame(vec1,vec2,vec3,…) subset(data_frame,subset=condicion_deseada)
name<-c("Mercurio","Venus","Tierra","Marte","Jupiter","Saturno","Urano","Neptuno")
tipo<-c("Terrestre","Terrestre","Terrestre","Terrestre","Gaseoso","Gaseoso","Gaseoso","Gaseoso")
diametro<-c(0.382,0.949,1,0.532,11.209,9.449,4.007,3.883)
rotacion<-c(58.64,-243.02,1,1.03,0.41,0.43,-0.72,0.67)
anillos<-c(FALSE,FALSE,FALSE,FALSE,TRUE,TRUE,TRUE,TRUE)
planetas_df<-data.frame(name,tipo,diametro,rotacion,anillos)
planetas_df
## name tipo diametro rotacion anillos
## 1 Mercurio Terrestre 0.382 58.64 FALSE
## 2 Venus Terrestre 0.949 -243.02 FALSE
## 3 Tierra Terrestre 1.000 1.00 FALSE
## 4 Marte Terrestre 0.532 1.03 FALSE
## 5 Jupiter Gaseoso 11.209 0.41 TRUE
## 6 Saturno Gaseoso 9.449 0.43 TRUE
## 7 Urano Gaseoso 4.007 -0.72 TRUE
## 8 Neptuno Gaseoso 3.883 0.67 TRUE
class(planetas_df)
## [1] "data.frame"
head(planetas_df,3)
## name tipo diametro rotacion anillos
## 1 Mercurio Terrestre 0.382 58.64 FALSE
## 2 Venus Terrestre 0.949 -243.02 FALSE
## 3 Tierra Terrestre 1.000 1.00 FALSE
tail(planetas_df,3)
## name tipo diametro rotacion anillos
## 6 Saturno Gaseoso 9.449 0.43 TRUE
## 7 Urano Gaseoso 4.007 -0.72 TRUE
## 8 Neptuno Gaseoso 3.883 0.67 TRUE
str(planetas_df)
## 'data.frame': 8 obs. of 5 variables:
## $ name : chr "Mercurio" "Venus" "Tierra" "Marte" ...
## $ tipo : chr "Terrestre" "Terrestre" "Terrestre" "Terrestre" ...
## $ diametro: num 0.382 0.949 1 0.532 11.209 ...
## $ rotacion: num 58.64 -243.02 1 1.03 0.41 ...
## $ anillos : logi FALSE FALSE FALSE FALSE TRUE TRUE ...
summary(planetas_df)
## name tipo diametro rotacion
## Length:8 Length:8 Min. : 0.3820 Min. :-243.0200
## Class :character Class :character 1st Qu.: 0.8448 1st Qu.: 0.1275
## Mode :character Mode :character Median : 2.4415 Median : 0.5500
## Mean : 3.9264 Mean : -22.6950
## 3rd Qu.: 5.3675 3rd Qu.: 1.0075
## Max. :11.2090 Max. : 58.6400
## anillos
## Mode :logical
## FALSE:4
## TRUE :4
##
##
##
Obtenga el subconjunto de aquellos planetas con diametro menor igual a 1 y mayor igual a 1.
subset(planetas_df,subset=diametro>=1)
## name tipo diametro rotacion anillos
## 3 Tierra Terrestre 1.000 1.00 FALSE
## 5 Jupiter Gaseoso 11.209 0.41 TRUE
## 6 Saturno Gaseoso 9.449 0.43 TRUE
## 7 Urano Gaseoso 4.007 -0.72 TRUE
## 8 Neptuno Gaseoso 3.883 0.67 TRUE
subset(planetas_df,subset=diametro<=1)
## name tipo diametro rotacion anillos
## 1 Mercurio Terrestre 0.382 58.64 FALSE
## 2 Venus Terrestre 0.949 -243.02 FALSE
## 3 Tierra Terrestre 1.000 1.00 FALSE
## 4 Marte Terrestre 0.532 1.03 FALSE