La presente actividad tiene como objetivo realizar una exploración y transformación inicial de la base de datos rendimiento acedemico de los estudiantes (Students Performance Dataset). Para ello,se realizará la importación de la base de datos, una exploración de su estructura y la identificación y transformación de diferentes tipos de variables utilizando R.
La base de datos original fue obtenida de la plataforma Kaggle: Students Performance Dataset en Kaggle
Para importar lainformación a R se utilizará el paquete
readxl, que permite trabajar con archivos en formato
Excel.
library(readxl)
estudiantes <- read_excel("Datos-Diplomado-expo.xlsx")
Una vez importada la información, se verificó que la base de datos se
encuentre almacenada correctamente en el objeto
estudiantes.
estudiantes
## # A tibble: 2,392 × 15
## StudentID Age Gender Ethnicity ParentalEducation StudyTimeWeekly Absences
## <dbl> <dbl> <dbl> <dbl> <dbl> <chr> <dbl>
## 1 1001 17 1 0 2 1.98337228078547… 7
## 2 1002 18 0 0 1 1540875605584670 0
## 3 1003 15 0 2 3 421056976881226 26
## 4 1004 17 1 0 3 1.00288294739582… 14
## 5 1005 17 1 0 2 4.67249527297132… 17
## 6 1006 18 0 0 1 8191218545250180 0
## 7 1007 15 0 1 1 1.56016804746992… 10
## 8 1008 15 1 1 4 1.5424496305808E… 22
## 9 1009 17 0 0 0 4562007558047700 1
## 10 1010 16 1 0 1 1.84444663630972… 0
## # ℹ 2,382 more rows
## # ℹ 8 more variables: Tutoring <dbl>, ParentalSupport <dbl>,
## # Extracurricular <dbl>, Sports <dbl>, Music <dbl>, Volunteering <dbl>,
## # GPA <chr>, GradeClass <chr>
La función head() permite observar las primeras seis
observaciones de la base de datos.
head(estudiantes)
## # A tibble: 6 × 15
## StudentID Age Gender Ethnicity ParentalEducation StudyTimeWeekly Absences
## <dbl> <dbl> <dbl> <dbl> <dbl> <chr> <dbl>
## 1 1001 17 1 0 2 1.98337228078547E… 7
## 2 1002 18 0 0 1 1540875605584670 0
## 3 1003 15 0 2 3 421056976881226 26
## 4 1004 17 1 0 3 1.00288294739582E… 14
## 5 1005 17 1 0 2 4.672495272971329… 17
## 6 1006 18 0 0 1 8191218545250180 0
## # ℹ 8 more variables: Tutoring <dbl>, ParentalSupport <dbl>,
## # Extracurricular <dbl>, Sports <dbl>, Music <dbl>, Volunteering <dbl>,
## # GPA <chr>, GradeClass <chr>
La función tail() permite visualizar las últimas seis
observaciones de la base de datos.
tail(estudiantes)
## # A tibble: 6 × 15
## StudentID Age Gender Ethnicity ParentalEducation StudyTimeWeekly Absences
## <dbl> <dbl> <dbl> <dbl> <dbl> <chr> <dbl>
## 1 3387 16 0 0 2 1.38140207899833E… 14
## 2 3388 18 1 0 3 1.06805546076943E… 2
## 3 3389 17 0 0 1 7583217279598860 4
## 4 3390 16 1 0 2 6.805499644680609… 20
## 5 3391 16 1 1 0 1.24166526554838E… 17
## 6 3392 16 1 0 2 1.78199074928852E… 13
## # ℹ 8 more variables: Tutoring <dbl>, ParentalSupport <dbl>,
## # Extracurricular <dbl>, Sports <dbl>, Music <dbl>, Volunteering <dbl>,
## # GPA <chr>, GradeClass <chr>
La función names() permite identificar los nombres de
las variables que conforman la base de datos.
names(estudiantes)
## [1] "StudentID" "Age" "Gender"
## [4] "Ethnicity" "ParentalEducation" "StudyTimeWeekly"
## [7] "Absences" "Tutoring" "ParentalSupport"
## [10] "Extracurricular" "Sports" "Music"
## [13] "Volunteering" "GPA" "GradeClass"
La función dim() permite conocer el número de filas y
columnas que contiene la base de datos.
dim(estudiantes)
## [1] 2392 15
La base de datos está conformada por 2.392 observaciones y 15 variables. Las observaciones corresponden a los estudiantes y las variables representan las diferentes características registradas para cada uno.
La función class() permite identificar la clase en la
que R almacenó la base de datos.
class(estudiantes)
## [1] "tbl_df" "tbl" "data.frame"
El resultado indica que la base fue almacenada como un tibble, que corresponde a una estructura de datos similar a un data.frame, organizada en filas y columnas.
la función str() para conocer la estructura interna de
la base de datos, el número de observaciones, variables y,
principalmente, el tipo de dato asignado a cada variable.
str(estudiantes)
## tibble [2,392 × 15] (S3: tbl_df/tbl/data.frame)
## $ StudentID : num [1:2392] 1001 1002 1003 1004 1005 ...
## $ Age : num [1:2392] 17 18 15 17 17 18 15 15 17 16 ...
## $ Gender : num [1:2392] 1 0 0 1 1 0 0 1 0 1 ...
## $ Ethnicity : num [1:2392] 0 0 2 0 0 0 1 1 0 0 ...
## $ ParentalEducation: num [1:2392] 2 1 3 3 2 1 1 4 0 1 ...
## $ StudyTimeWeekly : chr [1:2392] "1.98337228078547E+16" "1540875605584670" "421056976881226" "1.00288294739582E+16" ...
## $ Absences : num [1:2392] 7 0 26 14 17 0 10 22 1 0 ...
## $ Tutoring : num [1:2392] 1 0 0 0 1 0 0 1 0 0 ...
## $ ParentalSupport : num [1:2392] 2 1 2 3 3 1 3 1 2 3 ...
## $ Extracurricular : num [1:2392] 0 0 0 1 0 1 0 1 0 1 ...
## $ Sports : num [1:2392] 0 0 0 0 0 0 1 0 1 0 ...
## $ Music : num [1:2392] 1 0 0 0 0 0 0 0 0 0 ...
## $ Volunteering : num [1:2392] 0 0 0 0 0 0 0 0 1 0 ...
## $ GPA : chr [1:2392] "2929195591667680" "3042914833436370" "0.1126022544661815" "2.05421813970294E+16" ...
## $ GradeClass : chr [1:2392] "2.0" "1.0" "4.0" "3.0" ...
Los resultados muestran que la mayoría de las variables fueron almacenadas como variables numéricas, y solo tres variables (StudyTimeWeekly, GPA y GradeClass) fueron guardadas como variables de tipo carácter o texto.
Las variables StudyTimeWeekly y GPA están en formato texto, por lo que se codifican numéricamente.
estudiantes$StudyTimeWeekly_cod <- as.numeric(as.factor(estudiantes$StudyTimeWeekly))
estudiantes$GPA_cod <- as.numeric(as.factor(estudiantes$GPA))
las variables Gender y Ethnicity representan categorías, por lo que se convierten en factores para su análisis.
estudiantes$Gender <- as.factor(estudiantes$Gender)
estudiantes$Ethnicity <- as.factor(estudiantes$Ethnicity)
Se revisa su estructura y niveles para confirmar la conversión.
class(estudiantes$Gender)
## [1] "factor"
str(estudiantes$Gender)
## Factor w/ 2 levels "0","1": 2 1 1 2 2 1 1 2 1 2 ...
levels(estudiantes$Gender)
## [1] "0" "1"
class(estudiantes$Ethnicity)
## [1] "factor"
str(estudiantes$Ethnicity)
## Factor w/ 4 levels "0","1","2","3": 1 1 3 1 1 1 2 2 1 1 ...
levels(estudiantes$Ethnicity)
## [1] "0" "1" "2" "3"
La variable GradeClass contiene niveles académicos con un orden natural. Por ello se convierte en un factor ordenado.
estudiantes$GradeClass_ord<- factor(estudiantes$GradeClass,
levels = c("1.0", "2.0", "3.0", "4.0"),ordered = TRUE)
Se verifica la estructura del nuevo factor.
class(estudiantes$GradeClass_ord)
## [1] "ordered" "factor"
str(estudiantes$GradeClass_ord)
## Ord.factor w/ 4 levels "1.0"<"2.0"<"3.0"<..: 2 1 4 3 4 1 2 4 2 NA ...
levels(estudiantes$GradeClass_ord)
## [1] "1.0" "2.0" "3.0" "4.0"
| Variable Original | Tipo Final | Operación Realizada |
|---|---|---|
StudyTimeWeekly |
Numérico | Codificación a números |
GPA |
Numérico | Codificación a números |
Gender |
Factor | Conversión a categorías |
Ethnicity |
Factor | Conversión a categorías |
GradeClass |
Factor Ordenado | Jerarquía ordinal |