El presente apartado tiene como propósito realizar una exploración inicial de la base de datos de citas médicas. La exploración se centra en reconocer la estructura de los datos, identificar las variables disponibles, revisar los tipos de información, verificar la presencia de datos faltantes y realizar visualizaciones exploratorias.
# Cargar paquetes
library(readxl)
library(tidyverse)
library(plotly)
# Importar el archivo Excel
appointment <- read_excel(
"Appointment . Proyecto.xlsx",
sheet = "Appointment (1)"
)
# Mostrar las primeras filas
head(appointment)## [1] "Analitica de datos.Rproj"
## [2] "Appointment . Proyecto.xlsx"
## [3] "appointments final.xlsx"
## [4] "EncuestaBrfss2020-selected-columns.csv"
## [5] "Practica de R mack.Rmd"
## [6] "R-Marckdown--clase.html"
## [7] "R-Marckdown--clase.Rmd"
## [8] "R Marckdown- clase.Rmd"
## [9] "RD202401.csv.crdownload"
Appointment . Proyecto.xlsx
## [1] 1000
## [1] 5
## [1] 1000 5
## [1] "AppointmentID" "Date" "Time" "PatientID"
## [5] "DoctorID"
Las variables disponibles son:
## tibble [1,000 × 5] (S3: tbl_df/tbl/data.frame)
## $ AppointmentID: num [1:1000] 639 404 281 628 889 551 769 385 813 986 ...
## $ Date : POSIXct[1:1000], format: "2022-04-08" "2023-04-10" ...
## $ Time : chr [1:1000] "2023-12-23T14:33:46.406Z" "2023-12-23T14:33:46.407Z" "2023-12-23T14:33:46.407Z" "2023-12-23T14:33:46.407Z" ...
## $ PatientID : num [1:1000] 109 823 465 443 852 160 886 480 634 898 ...
## $ DoctorID : num [1:1000] 462 774 226 656 262 748 580 438 662 653 ...
## $AppointmentID
## [1] "numeric"
##
## $Date
## [1] "POSIXct" "POSIXt"
##
## $Time
## [1] "character"
##
## $PatientID
## [1] "numeric"
##
## $DoctorID
## [1] "numeric"
## AppointmentID Date Time PatientID DoctorID
## 602 721 12 610 611
## AppointmentID Date Time PatientID DoctorID
## 0 0 0 0 0
## [1] FALSE
# Convertir Date a formato de fecha
appointment$Date <- as.Date(appointment$Date)
# Revisar la variable
class(appointment$Date)## [1] "Date"
## [1] "2020-01-01"
## [1] "2023-12-31"
Se utilizará el paquete plotly, que permite generar
gráficos interactivos en el documento HTML de R Markdown.
# Contar registros por fecha
citas_fecha <- appointment %>%
count(Date)
# Crear gráfico interactivo
plot_ly(
data = citas_fecha,
x = ~Date,
y = ~n,
type = "scatter",
mode = "lines+markers"
) %>%
layout(
title = "Registros de citas según fecha",
xaxis = list(title = "Fecha"),
yaxis = list(title = "Número de registros")
)El gráfico permite observar visualmente cómo se distribuyen los registros de citas a través de las diferentes fechas disponibles en la base de datos.
# Contar registros por médico
citas_doctor <- appointment %>%
count(DoctorID, sort = TRUE)
# Seleccionar los 10 DoctorID con mayor cantidad de registros
citas_doctor_10 <- citas_doctor %>%
slice_head(n = 10)
# Crear gráfico interactivo
plot_ly(
data = citas_doctor_10,
x = ~DoctorID,
y = ~n,
type = "bar",
text = ~n,
textposition = "auto"
) %>%
layout(
title = "Registros de citas por DoctorID",
xaxis = list(title = "DoctorID"),
yaxis = list(title = "Número de registros")
)El gráfico permite observar cuáles son los DoctorID que aparecen con mayor frecuencia entre los registros de citas. Esta visualización permite reconocer cómo están distribuidos los registros entre los identificadores de los médicos, sin interpretar estos valores como indicadores de productividad o desempeño.
# Contar registros por paciente
citas_paciente <- appointment %>%
count(PatientID, sort = TRUE)
# Seleccionar los 10 PatientID con mayor cantidad de registros
citas_paciente_10 <- citas_paciente %>%
slice_head(n = 10)
# Crear gráfico interactivo
plot_ly(
data = citas_paciente_10,
x = ~PatientID,
y = ~n,
type = "bar",
text = ~n,
textposition = "auto"
) %>%
layout(
title = "Registros asociados a PatientID",
xaxis = list(title = "PatientID"),
yaxis = list(title = "Número de registros")
)El gráfico permite identificar visualmente los PatientID que presentan una mayor cantidad de registros dentro de la base de datos.