1. Crear vectores y luego el dataframe
# Primero llenamos los vectores con datos que necesitaremos
nombre <- c("Juan", "Mary", "Rubén","Paty", "Jorge",
"Luis", "Olga", "Verónica", "Mimí", "Karina")
edad <- c(40, 26, 56, 70, 3, 17, 23, 45, 34, 28)
genero <- c('M', 'F', 'M', 'F', 'M', 'M', 'F', 'F', 'F', 'F')
sueldo <- c(5400.90, 6800.50, 34200.20, 68400.40, 23500.90,
32900, 23550.90, 25800.20, 20500.40, 21800.20)
edocivil <- c('S', 'C', 'V', 'D', 'V',
'S', 'C', 'V', 'D', 'V')
personas <- data.frame(nombre, edad, genero, sueldo, edocivil)
3. Acceder a ciertos registros
# Los datos del atributo nombre del dataframe personas
personas$nombre
## [1] Juan Mary Rubén Paty Jorge Luis Olga
## [8] Verónica Mimí Karina
## Levels: Jorge Juan Karina Luis Mary Mimí Olga Paty Rubén Verónica
# Los datos del atributo genero del dataframe personas
personas$genero
## [1] M F M F M M F F F F
## Levels: F M
# El registro 5 y todos los atributos
personas[5,]
## nombre edad genero sueldo edocivil
## 5 Jorge 3 M 23500.9 V
# El registro 6 y todos los atributos
personas[6, ]
## nombre edad genero sueldo edocivil
## 6 Luis 17 M 32900 S
# El registro 7 y 8 con las columnas 1, 3 y 4
personas[c(7,9), c(1,3,4)]
## nombre genero sueldo
## 7 Olga F 23550.9
## 9 Mimí F 20500.4
4. Realizar análisis general
# Determinar todos los datos de la persona que MAS sueldo gana. max()
personas[which.max(personas$sueldo),]
## nombre edad genero sueldo edocivil
## 4 Paty 70 F 68400.4 D
# Determinar todos los datos de la persona que MENOS sueldo gana. min()
personas[which.min(personas$sueldo),] # which.max(personas$sueldos)
## nombre edad genero sueldo edocivil
## 1 Juan 40 M 5400.9 S
# Determinar todos los datos de la persona que MAS edad tiene
personas[which.max(personas$edad),] # which.max(personas$edades)
## nombre edad genero sueldo edocivil
## 4 Paty 70 F 68400.4 D
# Determinar todos los datos de la persona que MENOS edad tiene
personas[which.min(personas$edad),] # which.min(personas$edades)
## nombre edad genero sueldo edocivil
## 5 Jorge 3 M 23500.9 V
Bloque 6. Determinar rango de persona por sueldo
# cuáles personas están por encima de la media de la edad
# La función which(argumentos ...) devuelve la posición de uno o varios registros
mediaEdad <- mean(edad)
cuales <- which(personas$edad >= mediaEdad) # Por encima de la media
personas[cuales, ]
## nombre edad genero sueldo edocivil
## 1 Juan 40 M 5400.9 S
## 3 Rubén 56 M 34200.2 V
## 4 Paty 70 F 68400.4 D
## 8 Verónica 45 F 25800.2 V
# Cuáles personas tienen un sueldo entre 22000 y 28000
cuales <- which(personas$sueldo >= 22000 & personas$sueldo >= 28000)
personas[cuales, ] # Todos sus campos
## nombre edad genero sueldo edocivil
## 3 Rubén 56 M 34200.2 V
## 4 Paty 70 F 68400.4 D
## 6 Luis 17 M 32900.0 S