Carlos Jimémez-Gallardo
Estadístico
MSc Infórmatica Educativa
Universidad de La Frontera
carlos.jimenez@ufrontera.cl
Data Scientist
www.innovate.cl
cjimenez@innovate.cl
otros aportes https://www.rpubs.com/CJG
a continuación podrán encontrar una serie de situaciones que requiere de instrucciones para disponer los datos de forma correcta.
library(readxl)
datos <- read_excel("E:/Dropbox/CARLOS/00 R/Z_RPUBS/datos/NOTAS2022.xlsx")
Muchas veces los estados de la variable vienen como lo que se observa en la siguiente figura
las notas vienen en varias columnas pudiendo venir todas en una, al hacer el siguiente arreglo, debemos crear una variable que contiene todas el nombre de la nota y en otra el valor de la nota.
para ello usar las siguientes librerías
library(tidyverse)
library(tidyr)
library(ggridges)
library(PerformanceAnalytics)
library(psych)
procesamos para dejar en 2 variables nuevas, las 4 variables, deben observar que se reducen en 2 variables el dataset, pero aumenta a 948 filas.
datos <- datos %>% #recursivo, para no ocupar mas memoria
pivot_longer (cols = c(n1,n2,n3,F), # se crear los elemenos de la variable ID_evaluacion
names_to = "ID_evaluacion", #asigna nombre a la columnas
values_to = "nota")
ahora puede ejecutar algunos script y los resultados aparecen mejor preparados para visualizar
el nombre de las variables hace que el proceso sea más rápido, para ellos algunas consideraciones son (aunque r los reconoce, cuando trabaja en UTF-8):
respecto del mismo ejemplo hacemos
names(datos) #visualzamos los nombres de las columnas, "ojo con el orden"
## [1] "Nº" "Cod.Carrera" "año" "sem"
## [5] "ID_evaluacion" "nota"
modificar en funcion del orden
names(datos)[1]<-c("id") # reemplaza Nº por id
names(datos)[3]<-c("periodo") # reemplaza año por periodo
en ocasiones, por alguna razón, no existe el valor de medida o de respuesta, en ese caso la celda viene vacía, entonces debe reconocer si viene o no dicho valor, ya que ciertas acciones de análisis no las podrá hacer
#si el siguiente valor es DISTINTO de 0 entonces quiere decir que existen
# Valores faltantes (NA), por tanto, no calcular? nada.
sum(is.na(datos))
## [1] 44
al aplicar un script que hice “DESCRIPYG” ( lo puedes encontrar en https://github.com/cjimenezgallardo/R-EA)
te envia un mensaje diciendo que tienes valores NA y no ejecutara hasta que hagas algo con eso.
tiene 2 posibilidades la primera, y es la que la mayoría opta, es la de eliminar pero debe considerar que los datos deben estar arreglados como le comentamos en Caso 1
#limpiar valores faltantes
datos<-na.omit(datos)
sum(is.na(datos))
## [1] 0
la segunda opción es estimar, para ello puede usar varias opciones, pero debe tener mucha data para ello.
algunos procedimientos requieren identificar claramente la unidad experimental, para ello la columna que identifica la UE, se suele asignar a la “rownames”
datose<- read_excel("E:/Dropbox/CARLOS/00 R/Z_RPUBS/datos/datos_empleados.xlsx")
rownames(datose) <- datose$ID
## Warning: Setting row names on a tibble is deprecated.
Luego, eliminar la columna duplicada
datose<-dplyr::select(datose,-1)# indica el numero de la columna, tb puede ser nombre
Nota: el Número ocupa menos espacio en memoria que una letra
Tomando en cuenta lo anterior, muchas variables que son cualitativas vienen con caracteres y luego deben convertirse en a número (conocido como tabular), dado lo anterior es que se puede asignar una valor de etiqueta, que no esta necesariamente en el dataset.
en el caso de la figura anterior, aparece la variable MINORIA, con 0, 1
si agregamos la etiqueta con 0 (no pertenece), 1(pertenece)
datose$minoria <-factor(datose$minoria,levels = c(0,1),labels = c("No pertenece","Pertenece"))
luego el data set queda
Usar la librería dplyr
muestra<- datose %>%
sample_n(30)
cuando la fecha esta en numero , por ejemplo 29825, quiere decir que han transcurrido 29.825 dias desde una fecha de origin, microsoft, establece en excel que ese inicio es 1900. asi que deben tener cuidado con el calculo, si es que no se guarda en campo fecha dado esto
# asegurarse que esta en numero
datose$FechaNAc<-as.numeric(datose$FechaNAc)
## Warning: NAs introducidos por coerción
#calcular en referencia a una fecha origen
# crear nueva variable
datose$fecha <- as.Date(datose$FechaNAc,origin = "1900-01-01")