Practica 7 Vectores y dataframes en R

Objetivo: Ejecutar operacionesen R simulando estructuras de datos vectores y data.frames en R

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