Práctica 7. Realizar operaciones con vectores y data.frames en R

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

Operaciones

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"
edades<-c(28,26,32,24,33,32,44)
edades
## [1] 28 26 32 24 33 32 44
sueldos<-c(12.4,13.5,23.4,56.7,14.8,13.2,22.1)
sueldos
## [1] 12.4 13.5 23.4 56.7 14.8 13.2 22.1
genero<-c('M','M','M','F','F','M','F')
genero
## [1] "M" "M" "M" "F" "F" "M" "F"
#Despliega las variables de la sesion
ls()
## [1] "edades"  "genero"  "nombres" "sueldos" "x"       "y"
?mean # generar ayuda
## starting httpd help server ... done
help ('mean')

#Sacar la media de las edades
mean.edades<- mean(edades)
mean.edades
## [1] 31.28571
#Conocer los indices del arreglo
which(genero =='M')
## [1] 1 2 3 6
#¿Cuáles nombres son de genero masculino?
 nombres[which(genero=='M')]
## [1] "Hugo"  "Paco"  "Luis"  "Ruben"
# Personas con edades de entre 25 a 30 años
which (edades >= 25 & edades <=30)
## [1] 1 2
nombres [which (edades >= 25 & edades <=30)]
## [1] "Hugo" "Paco"
#Muestra las edades y los pasatiempos
pasatiempos<-c('musica','musica','estudio','videojuego', 'musica','musica','videojuego')
pasatiempos
## [1] "musica"     "musica"     "estudio"    "videojuego" "musica"    
## [6] "musica"     "videojuego"
edades
## [1] 28 26 32 24 33 32 44
pasatiempos
## [1] "musica"     "musica"     "estudio"    "videojuego" "musica"    
## [6] "musica"     "videojuego"
#¿A qué personas les gustan los videojuegos y que promedio de edad tienen?

nombres [which(pasatiempos == 'videojuego')]
## [1] "Paty" "Gaby"
edades [which (pasatiempos =='videojuego')]
## [1] 24 44
mean(edades[which(pasatiempos =='videojuego')])
## [1] 34
genero[which (pasatiempos == 'videojuego')]
## [1] "F" "F"
## Generar una tabla a partir de todos los vectores que tenemos

nombres
## [1] "Hugo"  "Paco"  "Luis"  "Paty"  "Maria" "Ruben" "Gaby"
edades
## [1] 28 26 32 24 33 32 44
genero
## [1] "M" "M" "M" "F" "F" "M" "F"
sueldos
## [1] 12.4 13.5 23.4 56.7 14.8 13.2 22.1
pasatiempos
## [1] "musica"     "musica"     "estudio"    "videojuego" "musica"    
## [6] "musica"     "videojuego"
misdatos<-data.frame(nombres,edades,genero,sueldos,pasatiempos, stringsAsFactors = FALSE)
misdatos
##   nombres edades genero sueldos pasatiempos
## 1    Hugo     28      M    12.4      musica
## 2    Paco     26      M    13.5      musica
## 3    Luis     32      M    23.4     estudio
## 4    Paty     24      F    56.7  videojuego
## 5   Maria     33      F    14.8      musica
## 6   Ruben     32      M    13.2      musica
## 7    Gaby     44      F    22.1  videojuego
#Agregar registros completos a "misdatos"

misdatos<-rbind(misdatos,c('Sofia',32,'F',6736,'videojuego'))
misdatos<-rbind(misdatos,c('Miguel',54,'M',333,'videojuego'))
misdatos<-rbind(misdatos,c('Sandra',45,'F',36,'estudio'))
misdatos<-rbind(misdatos,c('Enrique',32,'M',765,'musica'))
misdatos<-rbind(misdatos,c('Cesar',18,'M',43,'videojuego'))
misdatos<-rbind(misdatos,c('Gustavo',78,'M',8888,'estudio'))
misdatos<-rbind(misdatos,c('Daniel',15,'M',12.4,'musica'))
misdatos<-rbind(misdatos,c('Angel',76,'M',34.56,'estudio'))
misdatos<-rbind(misdatos,c('Dana',45,'F',323,'musica'))
misdatos
##    nombres edades genero sueldos pasatiempos
## 1     Hugo     28      M    12.4      musica
## 2     Paco     26      M    13.5      musica
## 3     Luis     32      M    23.4     estudio
## 4     Paty     24      F    56.7  videojuego
## 5    Maria     33      F    14.8      musica
## 6    Ruben     32      M    13.2      musica
## 7     Gaby     44      F    22.1  videojuego
## 8    Sofia     32      F    6736  videojuego
## 9   Miguel     54      M     333  videojuego
## 10  Sandra     45      F      36     estudio
## 11 Enrique     32      M     765      musica
## 12   Cesar     18      M      43  videojuego
## 13 Gustavo     78      M    8888     estudio
## 14  Daniel     15      M    12.4      musica
## 15   Angel     76      M   34.56     estudio
## 16    Dana     45      F     323      musica
##¿Qué tipo de datos es "misdatos"?
class(misdatos)
## [1] "data.frame"
##Visualizar los datos por medio de VIEW
View(misdatos)
##Conocer cuantos renglones y colunmas hay en un data.frame
length(misdatos)
## [1] 5
str(misdatos)
## 'data.frame':    16 obs. of  5 variables:
##  $ nombres    : chr  "Hugo" "Paco" "Luis" "Paty" ...
##  $ edades     : chr  "28" "26" "32" "24" ...
##  $ genero     : chr  "M" "M" "M" "F" ...
##  $ sueldos    : chr  "12.4" "13.5" "23.4" "56.7" ...
##  $ pasatiempos: chr  "musica" "musica" "estudio" "videojuego" ...
##Acceder a los renglones y columnas de un data.frame
##Mostrar los primeros 6 renglones

head(misdatos)
##   nombres edades genero sueldos pasatiempos
## 1    Hugo     28      M    12.4      musica
## 2    Paco     26      M    13.5      musica
## 3    Luis     32      M    23.4     estudio
## 4    Paty     24      F    56.7  videojuego
## 5   Maria     33      F    14.8      musica
## 6   Ruben     32      M    13.2      musica
##Mostrar los ultimos 6
tail(misdatos)
##    nombres edades genero sueldos pasatiempos
## 11 Enrique     32      M     765      musica
## 12   Cesar     18      M      43  videojuego
## 13 Gustavo     78      M    8888     estudio
## 14  Daniel     15      M    12.4      musica
## 15   Angel     76      M   34.56     estudio
## 16    Dana     45      F     323      musica
##Mostrar del 1 al 5
misdatos[1:5,]##Si no hay nada despues de la coma son todaslas columnas
##   nombres edades genero sueldos pasatiempos
## 1    Hugo     28      M    12.4      musica
## 2    Paco     26      M    13.5      musica
## 3    Luis     32      M    23.4     estudio
## 4    Paty     24      F    56.7  videojuego
## 5   Maria     33      F    14.8      musica
##
misdatos[1:5,4:5] ### [renglón, columna]
##   sueldos pasatiempos
## 1    12.4      musica
## 2    13.5      musica
## 3    23.4     estudio
## 4    56.7  videojuego
## 5    14.8      musica
misdatos[6,]### Mustra un renglón  especifico
##   nombres edades genero sueldos pasatiempos
## 6   Ruben     32      M    13.2      musica
##Otra manera de acceder a los datos en un data frame
misdatos$nombres ## $ identifica el nombre del atributo
##  [1] "Hugo"    "Paco"    "Luis"    "Paty"    "Maria"   "Ruben"   "Gaby"   
##  [8] "Sofia"   "Miguel"  "Sandra"  "Enrique" "Cesar"   "Gustavo" "Daniel" 
## [15] "Angel"   "Dana"
##Analisis de datos usando data frame
### ¿Cuál es la media de sueldos en "misdatos"
mean.sueldos<-mean(as.double(misdatos$sueldos))
mean.sueldos
## [1] 1082.941
###¿Cuales son los datos de la persona que más gana dinero?

max(as.double(misdatos$sueldos))
## [1] 8888
which.max(as.double(misdatos$sueldos))
## [1] 13
misdatos[which.max(as.double(misdatos$sueldos)),]
##    nombres edades genero sueldos pasatiempos
## 13 Gustavo     78      M    8888     estudio
###¿Cuales son los datos de la persona que menos gana ?

min(as.double(misdatos$sueldos))
## [1] 12.4
which.min(as.double(misdatos$sueldos))
## [1] 1
misdatos[which.min(as.double(misdatos$sueldos)),]
##   nombres edades genero sueldos pasatiempos
## 1    Hugo     28      M    12.4      musica