Descripcion: Desarrollar la práctica realizada en clase del uso de vectotes y dataframes
## vectores
x <- 1:10
x
## [1] 1 2 3 4 5 6 7 8 9 10
y <- c(9,5,7,6,4,0,3,2,8,7)
y
## [1] 9 5 7 6 4 0 3 2 8 7
nombres <- c('hugo', 'paco', 'luis', 'paty', 'maria', 'Ruben', 'Gaby')
nombres
## [1] "hugo" "paco" "luis" "paty" "maria" "Ruben" "Gaby"
#despliega las variables de la sesion
ls()
## [1] "nombres" "x" "y"
edades <- c(28, 26, 32, 24, 33, 27, 19)
edades
## [1] 28 26 32 24 33 27 19
sueldos <- c(12.5, 13.4, 56.7, 14.8, 7.1, 15.1, 13.6)
sueldos
## [1] 12.5 13.4 56.7 14.8 7.1 15.1 13.6
genero <- c("M", "M", "M", "F", "F", "M", "F")
genero
## [1] "M" "M" "M" "F" "F" "M" "F"
##sacar el promedio de las edades
?mean ## genera ayuda
## starting httpd help server ... done
help ('mean') #genera ayuda
mean.edades <- mean (edades)
mean.edades
## [1] 27
## sacar cuantos nombres hay en el vector
length(nombres)
## [1] 7
##sacar cuantos F y cuantos M son
genero == 'M'
## [1] TRUE TRUE TRUE FALSE FALSE TRUE FALSE
##conocer las posiciones de M, los indices de un arreglo
## which arroja elementos de un arreglo que cumplan con una condicion
which (genero == "M")
## [1] 1 2 3 6
nombres
## [1] "hugo" "paco" "luis" "paty" "maria" "Ruben" "Gaby"
## cuales nombres son de genero F
nombres [4:5] ##porque ya sabemos que es del 1 al 3
## [1] "paty" "maria"
nombres [which(genero == "F")]
## [1] "paty" "maria" "Gaby"
# saber que personas tienen entre 25 y 30 años
which(edades>=25 & edades<=30)
## [1] 1 2 6
nombres [which(edades>=25 & edades<=30)]
## [1] "hugo" "paco" "Ruben"
## c es un valor que inicializa un vector
pasatiempos <- c('musica', 'musica', 'estudio', 'videojuegos', 'musica', 'musica', 'videojuegos')
edades
## [1] 28 26 32 24 33 27 19
pasatiempos
## [1] "musica" "musica" "estudio" "videojuegos" "musica"
## [6] "musica" "videojuegos"
## quiero que me digas a que nombres de personas les gustan los videojuegos y que edad tienen estos
nombres [which (pasatiempos == 'videojuegos')] #nombres de quienes juegan videojuegos
## [1] "paty" "Gaby"
edades [which (pasatiempos == 'videojuegos')] #edades de quienes juegan videojuegos
## [1] 24 19
mean (edades [which (pasatiempos == 'videojuegos')]) #edad promedio de los que juegan videojuegos
## [1] 21.5
genero [which (pasatiempos == 'videojuegos')]
## [1] "F" "F"
### generar una tabla apartir de todos los vectores que tenemos
nombres
## [1] "hugo" "paco" "luis" "paty" "maria" "Ruben" "Gaby"
edades
## [1] 28 26 32 24 33 27 19
sueldos
## [1] 12.5 13.4 56.7 14.8 7.1 15.1 13.6
genero
## [1] "M" "M" "M" "F" "F" "M" "F"
pasatiempos
## [1] "musica" "musica" "estudio" "videojuegos" "musica"
## [6] "musica" "videojuegos"
misdatos <- data.frame (nombres, edades, sueldos, genero, pasatiempos, stringsAsFactors = FALSE)
misdatos
## nombres edades sueldos genero pasatiempos
## 1 hugo 28 12.5 M musica
## 2 paco 26 13.4 M musica
## 3 luis 32 56.7 M estudio
## 4 paty 24 14.8 F videojuegos
## 5 maria 33 7.1 F musica
## 6 Ruben 27 15.1 M musica
## 7 Gaby 19 13.6 F videojuegos
## agregando 5 registros completos a mis datos
##help (rbind)
nuevo <- c ('Ene', '25', '345.6', 'F', 'videojuegos')
misdatos <- rbind (misdatos, nuevo) ## agrega nuevo registro a misdatos
misdatos <- rbind (misdatos, c('Jorge', '41', '100', 'M', 'musica'))
misdatos <- rbind (misdatos, c('Ray', '33', '254.5', 'M', 'musica'))
misdatos <- rbind (misdatos, c('Cony', '34', '300.21', 'F', 'videojuegos'))
misdatos <- rbind (misdatos, c('Eduardo', '41', '50.50', 'M', 'estudio'))
misdatos
## nombres edades sueldos genero pasatiempos
## 1 hugo 28 12.5 M musica
## 2 paco 26 13.4 M musica
## 3 luis 32 56.7 M estudio
## 4 paty 24 14.8 F videojuegos
## 5 maria 33 7.1 F musica
## 6 Ruben 27 15.1 M musica
## 7 Gaby 19 13.6 F videojuegos
## 8 Ene 25 345.6 F videojuegos
## 9 Jorge 41 100 M musica
## 10 Ray 33 254.5 M musica
## 11 Cony 34 300.21 F videojuegos
## 12 Eduardo 41 50.50 M estudio
## saber que tipo de datos es misdatos
class(misdatos)
## [1] "data.frame"
class(edades)
## [1] "numeric"
class(nombres)
## [1] "character"
## visualizar mis datos por medio de VIEW
View(misdatos)
### conocer cuantos renglones y columnas hay en un data.frame
length(misdatos)
## [1] 5
str(misdatos)
## 'data.frame': 12 obs. of 5 variables:
## $ nombres : chr "hugo" "paco" "luis" "paty" ...
## $ edades : chr "28" "26" "32" "24" ...
## $ sueldos : chr "12.5" "13.4" "56.7" "14.8" ...
## $ genero : chr "M" "M" "M" "F" ...
## $ pasatiempos: chr "musica" "musica" "estudio" "videojuegos" ...
### acceder a los renglones y columnas de un data.frame
# mostrar los primeros 6 renglones
head(misdatos)
## nombres edades sueldos genero pasatiempos
## 1 hugo 28 12.5 M musica
## 2 paco 26 13.4 M musica
## 3 luis 32 56.7 M estudio
## 4 paty 24 14.8 F videojuegos
## 5 maria 33 7.1 F musica
## 6 Ruben 27 15.1 M musica
# mostrar los ultimos 6 renglones
tail(misdatos)
## nombres edades sueldos genero pasatiempos
## 7 Gaby 19 13.6 F videojuegos
## 8 Ene 25 345.6 F videojuegos
## 9 Jorge 41 100 M musica
## 10 Ray 33 254.5 M musica
## 11 Cony 34 300.21 F videojuegos
## 12 Eduardo 41 50.50 M estudio
# mostrar del 1 al 5
misdatos [1:5,]###la coma significa que si no hay nada despues es todas las columnas
## nombres edades sueldos genero pasatiempos
## 1 hugo 28 12.5 M musica
## 2 paco 26 13.4 M musica
## 3 luis 32 56.7 M estudio
## 4 paty 24 14.8 F videojuegos
## 5 maria 33 7.1 F musica
misdatos [1:5, 4:5]### muestra renglones y columnas especificas
## genero pasatiempos
## 1 M musica
## 2 M musica
## 3 M estudio
## 4 F videojuegos
## 5 F musica
misdatos [6,] ###muestra un renglon especifico
## nombres edades sueldos genero pasatiempos
## 6 Ruben 27 15.1 M musica
## otra manera de acceder a los registros de un data.frame
misdatos$nombres ## el "$"" identifica el nombre del atributo en el data.frame
## [1] "hugo" "paco" "luis" "paty" "maria" "Ruben" "Gaby"
## [8] "Ene" "Jorge" "Ray" "Cony" "Eduardo"
##mostrar mas de una columna
vista.misdatos <- c(misdatos$nombres, misdatos$edades)
vista.misdatos
## [1] "hugo" "paco" "luis" "paty" "maria" "Ruben" "Gaby"
## [8] "Ene" "Jorge" "Ray" "Cony" "Eduardo" "28" "26"
## [15] "32" "24" "33" "27" "19" "25" "41"
## [22] "33" "34" "41"
## analisis de datos usando el data.frame
# sacar la media de mis sueldos de misdatos
mean.sueldos <- mean(as.double(misdatos$sueldos))
mean.sueldos
## [1] 98.6675
## cuales son los datos de la persona que mas gana dinero
max(as.double(misdatos$sueldos))
## [1] 345.6
which.max(as.double(misdatos$sueldos))
## [1] 8
misdatos [which.max(as.double(misdatos$sueldos)),]
## nombres edades sueldos genero pasatiempos
## 8 Ene 25 345.6 F videojuegos
## cuales son los datos de la persona que menos gana dinero
misdatos [which.min(as.double(misdatos$sueldos)),]
## nombres edades sueldos genero pasatiempos
## 5 maria 33 7.1 F musica