Nombre: Realizar operaciones con vectores y data.frame

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

Descripción: Practicas desarrolladas en clase de manera presencial el día 15 de junio del 2018

Vectores

x<-1:10 #Se asigna al vector x los valores del 1 al 10
x #Se presenta X
##  [1]  1  2  3  4  5  6  7  8  9 10
y<-c(9,5,7,6,4,0,3,2,8,7) #se combian valores con la funcion "c" aun vector "y"
y #Se presenta Y
##  [1] 9 5 7 6 4 0 3 2 8 7
nombres<-c("Hugo","Luis","Paco","paty","Maria","Ruben","Gaby") #Se combinan valores de tipo character con la funcion "c" al arreglo nombres
nombres #Se presentan los valores del vector "nombres""
## [1] "Hugo"  "Luis"  "Paco"  "paty"  "Maria" "Ruben" "Gaby"

Saber los nombres de la variables en sesion

ls() #Muestra las variables en sesion
## [1] "nombres" "x"       "y"

Creación de vectores

edades<-c(28,26,32,24,33,54,34) #Se asignan 7 valores con la funcion "c" al vector edades
edades #Se presentan los valores del vector edades
## [1] 28 26 32 24 33 54 34
Sueldos<-c(12.3,56.7,12,34.6,1.3,12.5,10.4) #Se asignan 7 valores con la funcion "c" al vector sueldos
Sueldos #Se presentan los valores del vector "Sueldos"
## [1] 12.3 56.7 12.0 34.6  1.3 12.5 10.4
genero<-c("M","M","M","F","F","M","F")#Se asignan 7 valores con la funcion "c" al vector genero
genero #Se presentan los valores del vector "genero"
## [1] "M" "M" "M" "F" "F" "M" "F"

Sacar el promedio de la edades

#Formas de obtener ayuda de R
#?mean #Genera la ayuda de la media
#help("mean")#Genera la ayuda de la media
media.edades<-mean(edades) #Se obtiene la media del vector "edades" y se asigna a la variable "media.edades"
media.edades #Se present el valor de la media del vector de edades
## [1] 33

Sacar la cantidad de valores del vector nombres

length(nombres) # Usando la funcion length se obtiene la cantidad de valores que contienen el vector "nombres"
## [1] 7

Sacar cuantos valores del vector genero son masculinos y femeninos

genero=="M" #Se hace una operacion logica donde pregunta que valores en el vector "genero" son iguales a "M" y se presentan los valores
## [1]  TRUE  TRUE  TRUE FALSE FALSE  TRUE FALSE

Conocer los indices del arreglo

#help("which") #Se utiliza la ayuda para buscar la funcion "which"
which(genero=="M") #Se utiliza la funcion "which" para mostrar los indices donde se los localizan los valores del vector "genero" que conciden con la exprecion "M"
## [1] 1 2 3 6
nombres #se presentan los valores del vector "nombre" para comprobar la instruccion anterior
## [1] "Hugo"  "Luis"  "Paco"  "paty"  "Maria" "Ruben" "Gaby"
##Cuales nombres son de genero F femenino
nombres[4:5] #porque ya sabemos cuales son
## [1] "paty"  "Maria"
#Cuando se desconoce la posicion de  quien es femenino y quien es masculino
nombres[(which(genero=="F"))] #Mostrar valores del vector "nombres" utilizando la funcion "which" que obtiene los valores de indice del vector "genero" donde se cumple la condicion  
## [1] "paty"  "Maria" "Gaby"
##que personas tienen una edad entre 25 y 30 años
edades #se presentan la edades
## [1] 28 26 32 24 33 54 34
which(edades>=25 & edades<=30) # Muestra los indices del vector "edades" donde se cumple la condicion
## [1] 1 2
nombres[which(edades>=25 & edades<=30)]# Muestra los nombres que estan entre el rango de edades
## [1] "Hugo" "Luis"
#Se crea un nuevo vector con valores de nombre "Pasatiempos"
Pasatiempo<-c("musica","musica","estudio","videojuego","musica","musica","videojuego") #se agregarn valores al vector "pasatiempo"
edades #Se presentan los valores de vector edades
## [1] 28 26 32 24 33 54 34
Pasatiempo #Se presentan los valores del vector pasatiempo
## [1] "musica"     "musica"     "estudio"    "videojuego" "musica"    
## [6] "musica"     "videojuego"

Analisis de datos de vectores

#A que personas le gustan los videojuegos
nombres[which(Pasatiempo=="videojuego")]
## [1] "paty" "Gaby"
#Edades que les gustan os videojuegos
edades[which(Pasatiempo=="videojuego")]
## [1] 24 34
#Promedio de edades que les gustan los videojuegos
mean(edades[which(Pasatiempo=="videojuego")])
## [1] 29
#Genero de las personas que les gustan los videojuegos
genero[which(Pasatiempo=="videojuego")]
## [1] "F" "F"

Uso de data.frame

nombres #Se presentan los valores del vector "nombres"
## [1] "Hugo"  "Luis"  "Paco"  "paty"  "Maria" "Ruben" "Gaby"
edades #Se presentan los valores del vector "edades"
## [1] 28 26 32 24 33 54 34
Sueldos #Se presentan los valores del vector "Sueldos"
## [1] 12.3 56.7 12.0 34.6  1.3 12.5 10.4
genero #Se presentan valores del vector "genero"
## [1] "M" "M" "M" "F" "F" "M" "F"
Pasatiempo #Se presentan valores del vector "Pasatiempo"
## [1] "musica"     "musica"     "estudio"    "videojuego" "musica"    
## [6] "musica"     "videojuego"
misdatos<-data.frame(nombres,edades,Sueldos,genero,Pasatiempo,stringsAsFactors=FALSE) #pasa los vectores en colunmas y los convierte en una tabla estructurada
misdatos #Presenta el dat.frame
##   nombres edades Sueldos genero Pasatiempo
## 1    Hugo     28    12.3      M     musica
## 2    Luis     26    56.7      M     musica
## 3    Paco     32    12.0      M    estudio
## 4    paty     24    34.6      F videojuego
## 5   Maria     33     1.3      F     musica
## 6   Ruben     54    12.5      M     musica
## 7    Gaby     34    10.4      F videojuego
##Agregando 7 registros a al data.frame "datos" utilizando la funcion rbind
misdatos<-rbind(misdatos,c("maria",34,6.0,"F","estudio"))
misdatos<-rbind(misdatos,c("Martha",24,3.0,"F","videojuego"))
misdatos<-rbind(misdatos,c("Juan",34,15.0,"M","videojuego"))
misdatos<-rbind(misdatos,c("Jose",52,14.0,"M","estudio"))
misdatos<-rbind(misdatos,c("ruben",63,14.0,"M","estudio"))
misdatos<-rbind(misdatos,c("Manuel",24,15.0,"M","musica"))
misdatos<-rbind.data.frame(misdatos,c("Daniel",54,56.0,"M","musica"))
misdatos #Presenta el dat.frames
##    nombres edades Sueldos genero Pasatiempo
## 1     Hugo     28    12.3      M     musica
## 2     Luis     26    56.7      M     musica
## 3     Paco     32      12      M    estudio
## 4     paty     24    34.6      F videojuego
## 5    Maria     33     1.3      F     musica
## 6    Ruben     54    12.5      M     musica
## 7     Gaby     34    10.4      F videojuego
## 8    maria     34       6      F    estudio
## 9   Martha     24       3      F videojuego
## 10    Juan     34      15      M videojuego
## 11    Jose     52      14      M    estudio
## 12   ruben     63      14      M    estudio
## 13  Manuel     24      15      M     musica
## 14  Daniel     54      56      M     musica

Identificar el tipo de datos de un un vector

#se utiliza la funcion class para saber el tipo de datos
class(misdatos)  
## [1] "data.frame"
class(edades)
## [1] "numeric"
class(nombres)
## [1] "character"

visualizar los datos por medio de view

View(misdatos)

Estructura y acceso a datos en data.frme

##Conocer el numero de columnas de un data.frame
#Conocer el numero de colunmas y renglones
str(misdatos)
## 'data.frame':    14 obs. of  5 variables:
##  $ nombres   : chr  "Hugo" "Luis" "Paco" "paty" ...
##  $ edades    : chr  "28" "26" "32" "24" ...
##  $ Sueldos   : chr  "12.3" "56.7" "12" "34.6" ...
##  $ genero    : chr  "M" "M" "M" "F" ...
##  $ Pasatiempo: chr  "musica" "musica" "estudio" "videojuego" ...
###acceder a las colunmas y renglones de un data frame
###mostrar los primeros 6 renglones
head(misdatos) #head muestra por defecto los primeros 6 renglones
##   nombres edades Sueldos genero Pasatiempo
## 1    Hugo     28    12.3      M     musica
## 2    Luis     26    56.7      M     musica
## 3    Paco     32      12      M    estudio
## 4    paty     24    34.6      F videojuego
## 5   Maria     33     1.3      F     musica
## 6   Ruben     54    12.5      M     musica
##mostrar los ultimos 6
tail(misdatos) # tail muestra por defecto los ultimos 6 renglones
##    nombres edades Sueldos genero Pasatiempo
## 9   Martha     24       3      F videojuego
## 10    Juan     34      15      M videojuego
## 11    Jose     52      14      M    estudio
## 12   ruben     63      14      M    estudio
## 13  Manuel     24      15      M     musica
## 14  Daniel     54      56      M     musica
##mostrar del 1 al 5
misdatos[1:5,]## si no hay nada despues de la coma muestra todas las columna
##   nombres edades Sueldos genero Pasatiempo
## 1    Hugo     28    12.3      M     musica
## 2    Luis     26    56.7      M     musica
## 3    Paco     32      12      M    estudio
## 4    paty     24    34.6      F videojuego
## 5   Maria     33     1.3      F     musica
misdatos[1:5,4:5]# muestra los registros del 1 al 5 y solo las colunmas 4 y 5
##   genero Pasatiempo
## 1      M     musica
## 2      M     musica
## 3      M    estudio
## 4      F videojuego
## 5      F     musica
misdatos[6,]#muestra un renglon en especifico
##   nombres edades Sueldos genero Pasatiempo
## 6   Ruben     54    12.5      M     musica
##otra manera de acceder a los registros de un dataframe
misdatos$nombres# el signo de pesos $ identifica el atributo del data frame ($ columna)
##  [1] "Hugo"   "Luis"   "Paco"   "paty"   "Maria"  "Ruben"  "Gaby"  
##  [8] "maria"  "Martha" "Juan"   "Jose"   "ruben"  "Manuel" "Daniel"
##mostrar mas de una colunma
vista.misdatos<-c(misdatos$nombres,misdatos$edades)  
vista.misdatos
##  [1] "Hugo"   "Luis"   "Paco"   "paty"   "Maria"  "Ruben"  "Gaby"  
##  [8] "maria"  "Martha" "Juan"   "Jose"   "ruben"  "Manuel" "Daniel"
## [15] "28"     "26"     "32"     "24"     "33"     "54"     "34"    
## [22] "34"     "24"     "34"     "52"     "63"     "24"     "54"

Analisis de data.frame

#analis de datos usando el data frame
#media de los sueldos
mean(as.double(misdatos$Sueldos)) #convierte el atributo a double y le saca la media
## [1] 18.77143
misdatos
##    nombres edades Sueldos genero Pasatiempo
## 1     Hugo     28    12.3      M     musica
## 2     Luis     26    56.7      M     musica
## 3     Paco     32      12      M    estudio
## 4     paty     24    34.6      F videojuego
## 5    Maria     33     1.3      F     musica
## 6    Ruben     54    12.5      M     musica
## 7     Gaby     34    10.4      F videojuego
## 8    maria     34       6      F    estudio
## 9   Martha     24       3      F videojuego
## 10    Juan     34      15      M videojuego
## 11    Jose     52      14      M    estudio
## 12   ruben     63      14      M    estudio
## 13  Manuel     24      15      M     musica
## 14  Daniel     54      56      M     musica
##Cual son los nombres que mas gana dinero
misdatos[which.max(as.double(misdatos$Sueldos)),]
##   nombres edades Sueldos genero Pasatiempo
## 2    Luis     26    56.7      M     musica
##Cual son los nombres que menos gana dinero
misdatos[which.min(as.double(misdatos$Sueldos)),]
##   nombres edades Sueldos genero Pasatiempo
## 5   Maria     33     1.3      F     musica
misdatos[which.max(as.double(misdatos$Sueldos)),1] ## muestra el nombre del sueldo maximo usando numero de columna
## [1] "Luis"
misdatos$nombres[which.max(as.double(misdatos$Sueldos))] ## muestra el nombre del sueldo maximo usando nombre del atributo como columna
## [1] "Luis"