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"