# Instalar y cargar el paquete necesario
#install.packages("readxl")
#install.packages("dplyr")
library(readxl)
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
# Instalar y cargar el paquete openxlsx
# install.packages("openxlsx")
library(openxlsx)
# Crear una base de datos de historias clínicas
# Crear una base de datos de historias clínicas
historias_clinicas <- data.frame(
Numero_de_paciente = 1:20,
Numero_de_Cedula = integer(20),
Nombres_del_paciente = character(20),
Apellidos_del_paciente = character(20),
Edad = integer(20),
Sexo = character(20),
Domicilio = character(20),
Ciudad = character(20),
Departamento = character(20),
Numero_de_telefono = character(20),
Numero_de_historial_clinico = integer(20),
Fumante = character(20),
Procedencia = character(20),
Fecha_Ingreso = as.Date(character(20)),
Num_Piso = integer(20),
Num_Cama = integer(20),
Causa_Ingreso = character(20)
)
# Llenar la base de datos con datos ficticios
historias_clinicas$Numero_de_Cedula <- sample(1000000:9999999, 20)
historias_clinicas$Nombres_del_paciente <- c("Juan", "Maria", "Luis", "Ana", "Carlos", "Sofia", "Pedro", "Laura", "Raul", "Elena", "Diego", "Isabel", "Javier", "Carmen", "Fernando", "Marta", "Gabriel", "Silvia", "Hector", "Patricia")
historias_clinicas$Apellidos_del_paciente <- c("Gomez", "Lopez", "Martinez", "Rodriguez", "Perez", "Fernandez", "Sanchez", "Gonzalez", "Ramirez", "Diaz", "Torres", "Ruiz", "Ortega", "Vargas", "Castro", "Jimenez", "Molina", "Hernandez", "Rios", "Garcia")
historias_clinicas$Edad <- sample(18:80, 20)
historias_clinicas$Sexo <- sample(c("M", "F"), 20, replace = TRUE)
historias_clinicas$Domicilio <- c("Calle 123", "Avenida 456", "Carrera 789", "Calle 1011", "Avenida 1213", "Carrera 1415", "Calle 1617", "Avenida 1819", "Carrera 2021", "Calle 2223", "Avenida 2425", "Carrera 2627", "Calle 2829", "Avenida 3031", "Carrera 3233", "Calle 3435", "Avenida 3637", "Carrera 3839", "Calle 4041", "Avenida 4243")
historias_clinicas$Ciudad <- c("Bogota", "Medellin", "Cali", "Barranquilla", "Cartagena", "Bucaramanga", "Pereira", "Cucuta", "Villavicencio", "Santa Marta", "Ibague", "Pasto", "Manizales", "Neiva", "Valledupar", "Armenia", "Popayan", "Sincelejo", "Monteria", "Tunja")
historias_clinicas$Departamento <- c("Cundinamarca", "Antioquia", "Valle del Cauca", "Atlantico", "Bolivar", "Santander", "Risaralda", "Norte de Santander", "Meta", "Magdalena", "Tolima", "Narino", "Caldas", "Huila", "Cesar", "Quindio", "Cauca", "Sucre", "Cordoba", "Boyaca")
historias_clinicas$Numero_de_telefono <- sample(3000000:3999999, 20)
historias_clinicas$Numero_de_historial_clinico <- sample(1000:1999, 20)
historias_clinicas$Fumante <- sample(c("S", "N"), 20, replace = TRUE)
historias_clinicas$Procedencia <- sample(c("Emergencia", "Referido", "Consulta Externa"), 20, replace = TRUE)
historias_clinicas$Fecha_Ingreso <- as.Date(c("2023-01-01", "2023-02-15", "2023-03-10", "2023-04-20", "2023-05-05", "2023-06-08", "2023-07-12", "2023-08-24", "2023-09-30", "2023-10-15", "2023-11-05", "2023-12-20", "2024-01-02", "2024-02-18", "2024-03-11", "2024-04-22", "2024-05-08", "2024-06-10", "2024-07-22", "2024-08-30"))
historias_clinicas$Num_Piso <- sample(1:10, 20, replace = TRUE)
historias_clinicas$Num_Cama <- sample(1:50, 20, replace = TRUE)
historias_clinicas$Causa_Ingreso <- c("Fiebre", "Fractura de brazo", "Dolor abdominal", "Neumonía", "Infarto de miocardio", "Gripe", "Dolor de cabeza", "Cirugía programada", "Dolor lumbar", "Gastroenteritis", "Accidente automovilístico", "Infección respiratoria", "Dolor de espalda", "Intoxicación alimentaria", "Problemas de visión", "Apendicitis", "Dolor de garganta", "Problemas cardíacos", "Problemas respiratorios", "Gripe")
# Mostrar la base de datos
print(historias_clinicas)
## Numero_de_paciente Numero_de_Cedula Nombres_del_paciente
## 1 1 8221271 Juan
## 2 2 9994724 Maria
## 3 3 3261663 Luis
## 4 4 5843222 Ana
## 5 5 2376405 Carlos
## 6 6 6722213 Sofia
## 7 7 2635351 Pedro
## 8 8 7752429 Laura
## 9 9 8378300 Raul
## 10 10 3111181 Elena
## 11 11 4821647 Diego
## 12 12 4167691 Isabel
## 13 13 4053792 Javier
## 14 14 4936793 Carmen
## 15 15 4130829 Fernando
## 16 16 9907997 Marta
## 17 17 5161125 Gabriel
## 18 18 2317516 Silvia
## 19 19 9605388 Hector
## 20 20 5711154 Patricia
## Apellidos_del_paciente Edad Sexo Domicilio Ciudad
## 1 Gomez 24 F Calle 123 Bogota
## 2 Lopez 73 M Avenida 456 Medellin
## 3 Martinez 26 M Carrera 789 Cali
## 4 Rodriguez 42 M Calle 1011 Barranquilla
## 5 Perez 74 F Avenida 1213 Cartagena
## 6 Fernandez 70 M Carrera 1415 Bucaramanga
## 7 Sanchez 33 M Calle 1617 Pereira
## 8 Gonzalez 44 F Avenida 1819 Cucuta
## 9 Ramirez 38 F Carrera 2021 Villavicencio
## 10 Diaz 22 M Calle 2223 Santa Marta
## 11 Torres 31 F Avenida 2425 Ibague
## 12 Ruiz 64 M Carrera 2627 Pasto
## 13 Ortega 39 F Calle 2829 Manizales
## 14 Vargas 46 M Avenida 3031 Neiva
## 15 Castro 50 M Carrera 3233 Valledupar
## 16 Jimenez 20 F Calle 3435 Armenia
## 17 Molina 56 M Avenida 3637 Popayan
## 18 Hernandez 23 F Carrera 3839 Sincelejo
## 19 Rios 75 M Calle 4041 Monteria
## 20 Garcia 78 M Avenida 4243 Tunja
## Departamento Numero_de_telefono Numero_de_historial_clinico Fumante
## 1 Cundinamarca 3110509 1025 N
## 2 Antioquia 3351997 1543 N
## 3 Valle del Cauca 3714862 1962 S
## 4 Atlantico 3560922 1616 N
## 5 Bolivar 3516513 1568 N
## 6 Santander 3830723 1987 S
## 7 Risaralda 3767779 1955 N
## 8 Norte de Santander 3278741 1317 N
## 9 Meta 3738602 1015 N
## 10 Magdalena 3386828 1265 S
## 11 Tolima 3513789 1628 S
## 12 Narino 3405414 1210 S
## 13 Caldas 3289137 1941 N
## 14 Huila 3042092 1174 N
## 15 Cesar 3162737 1744 S
## 16 Quindio 3238548 1589 S
## 17 Cauca 3065148 1321 S
## 18 Sucre 3315858 1846 S
## 19 Cordoba 3999615 1070 N
## 20 Boyaca 3841727 1959 S
## Procedencia Fecha_Ingreso Num_Piso Num_Cama Causa_Ingreso
## 1 Consulta Externa 2023-01-01 1 41 Fiebre
## 2 Emergencia 2023-02-15 9 31 Fractura de brazo
## 3 Emergencia 2023-03-10 5 18 Dolor abdominal
## 4 Referido 2023-04-20 3 12 Neumonía
## 5 Consulta Externa 2023-05-05 6 9 Infarto de miocardio
## 6 Consulta Externa 2023-06-08 10 42 Gripe
## 7 Consulta Externa 2023-07-12 8 27 Dolor de cabeza
## 8 Consulta Externa 2023-08-24 10 30 Cirugía programada
## 9 Referido 2023-09-30 1 49 Dolor lumbar
## 10 Referido 2023-10-15 5 36 Gastroenteritis
## 11 Consulta Externa 2023-11-05 3 9 Accidente automovilístico
## 12 Consulta Externa 2023-12-20 1 10 Infección respiratoria
## 13 Emergencia 2024-01-02 7 32 Dolor de espalda
## 14 Referido 2024-02-18 4 27 Intoxicación alimentaria
## 15 Consulta Externa 2024-03-11 8 23 Problemas de visión
## 16 Referido 2024-04-22 4 8 Apendicitis
## 17 Emergencia 2024-05-08 5 42 Dolor de garganta
## 18 Referido 2024-06-10 2 43 Problemas cardíacos
## 19 Consulta Externa 2024-07-22 3 18 Problemas respiratorios
## 20 Referido 2024-08-30 10 39 Gripe
2.2. Por medio de informe gráfico clasifique por: a) Pacientes mujeres y Hombres
#2.2.
# a) # Instalar y cargar el paquete ggplot2 si no está instalado
if (!requireNamespace("ggplot2", quietly = TRUE)) {
install.packages("ggplot2")
}
library(ggplot2)
# Contar el número de hombres y mujeres
conteo_sexo <- table(historias_clinicas$Sexo)
# Crear un gráfico de barras
grafico_sexo <- ggplot(data = data.frame(Sexo = names(conteo_sexo), Cantidad = as.numeric(conteo_sexo)), aes(x = Sexo, y = Cantidad, fill = Sexo)) +
geom_bar(stat = "identity") +
labs(title = "Cantidad de Pacientes por Género",
x = "Género",
y = "Cantidad de Pacientes") +
theme_minimal() +
scale_fill_manual(values = c("blue", "pink")) # Personalizar colores si se desea
# Mostrar el gráfico
print(grafico_sexo)
#b)
# Establecer el diseño de la disposición de los gráficos
par(mfrow = c(1, 2))
# Crear histograma para no fumantes
hist(historias_clinicas$Edad[historias_clinicas$Fumante == "N"],
main = "Edad de No Fumantes",
xlab = "Edad",
ylab = "Cantidad de Pacientes",
col = "darkslategray2")
# Crear histograma para fumantes
hist(historias_clinicas$Edad[historias_clinicas$Fumante == "S"],
main = "Edad de Fumantes",
xlab = "Edad",
ylab = "Cantidad de Pacientes",
col = "lightsalmon")
# Instalar y cargar el paquete gridExtra si no está instalado
if (!requireNamespace("gridExtra", quietly = TRUE)) {
install.packages("gridExtra")
}
library(gridExtra)
##
## Attaching package: 'gridExtra'
## The following object is masked from 'package:dplyr':
##
## combine
# Tu código aquí (incluyendo la creación de los gráficos de pastel)
# Calcular la cantidad de hombres y mujeres por edad
conteo_sexo_edad <- table(historias_clinicas$Edad, historias_clinicas$Sexo)
# Convertir la tabla en un data frame
df_sexo_edad <- as.data.frame(conteo_sexo_edad)
names(df_sexo_edad) <- c("Edad", "Sexo", "Cantidad")
# Filtrar para obtener solo los registros de mujeres
df_mujeres <- subset(df_sexo_edad, Sexo == "F")
# Filtrar para obtener solo los registros de hombres
df_hombres <- subset(df_sexo_edad, Sexo == "M")
# Crear el gráfico de pastel para mujeres por edad
grafico_pastel_mujeres <- ggplot(df_mujeres, aes(x = "", y = Cantidad, fill = as.factor(Edad))) +
geom_bar(stat = "identity", width = 1) +
coord_polar("y", start = 0) +
labs(title = "Distribución de Mujeres por Edad",
fill = "Edad") +
theme_void()
# Crear el gráfico de pastel para hombres por edad
grafico_pastel_hombres <- ggplot(df_hombres, aes(x = "", y = Cantidad, fill = as.factor(Edad))) +
geom_bar(stat = "identity", width = 1) +
coord_polar("y", start = 0) +
labs(title = "Distribución de Hombres por Edad",
fill = "Edad") +
theme_void()
# Mostrar los gráficos de pastel lado a lado
grid.arrange(grafico_pastel_mujeres, grafico_pastel_hombres, ncol = 2)
c) Pacientes por piso divididos por sexo
# Instalar y cargar el paquete dplyr
install.packages("dplyr")
## Warning: package 'dplyr' is in use and will not be installed
library(dplyr)
# Calcular la cantidad de pacientes por piso y sexo
conteo_piso_sexo <- table(historias_clinicas$Num_Piso, historias_clinicas$Sexo)
# Convertir la tabla en un data frame
df_piso_sexo <- as.data.frame(conteo_piso_sexo)
names(df_piso_sexo) <- c("Num_Piso", "Sexo", "Cantidad")
# Cargar paquete ggplot2 si no está cargado
if (!requireNamespace("ggplot2", quietly = TRUE)) {
install.packages("ggplot2")
}
library(ggplot2)
# Crear el gráfico de barras apiladas
grafico_barras_apiladas <- ggplot(df_piso_sexo, aes(x = factor(Num_Piso), y = Cantidad, fill = Sexo)) +
geom_bar(stat = "identity") +
labs(title = "Distribución de Pacientes por Piso y Sexo",
x = "Número de Piso",
y = "Cantidad de Pacientes",
fill = "Sexo") +
theme_minimal()
# Mostrar el gráfico
print(grafico_barras_apiladas)
D)Edad y causa de ingreso
# Encontrar el rango mínimo y máximo de edades en los datos
min_edad <- min(historias_clinicas$Edad)
max_edad <- max(historias_clinicas$Edad)
# Establecer el número de intervalos deseado (ajusta según sea necesario)
num_intervalos <- 10
# Calcular la amplitud del intervalo
amplitud <- ceiling((max_edad - min_edad) / num_intervalos)
# Crear un rango de intervalos basado en la amplitud
intervalos <- seq(min_edad, max_edad + amplitud, by = amplitud)
# Obtener colores únicos para cada causa de ingreso
colores <- rainbow(length(unique(historias_clinicas$Causa_Ingreso)), alpha = 0.5)
# Crear el gráfico de barras con colores personalizados
par(mfrow = c(1, 1))
for (i in 1:length(unique(historias_clinicas$Causa_Ingreso))) {
hist(
# Filtrar edades por cada causa de ingreso
historias_clinicas$Edad[historias_clinicas$Causa_Ingreso == unique(historias_clinicas$Causa_Ingreso)[i]],
breaks = intervalos,
main = "Distribución de Edad de Pacientes por Causa de Ingreso",
xlab = "Edad",
ylab = "Cantidad de Pacientes",
col = colores[i],
border = "white", # Agregar un borde blanco a las barras
density = 50, # Aumentar la densidad de las barras
xlim = c(min_edad, max_edad), # Ajustar el rango del eje x
ylim = c(0, max(table(historias_clinicas$Edad))), # Ajustar el rango del eje y
# Agregar histogramas adicionales sin sobrescribir el primero
add = i > 1
)
}
# Agregar una leyenda
legend("topright", unique(historias_clinicas$Causa_Ingreso), fill = colores, border = "white")
E) Promedio de edad por género (Mujeres y Hombres)
# Cargar el paquete ggplot2 si no está cargado
if (!requireNamespace("ggplot2", quietly = TRUE)) {
install.packages("ggplot2")
}
library(ggplot2)
# Calcular el conteo de edades por género
conteo_edades <- aggregate(Edad ~ Sexo, data = historias_clinicas, FUN = length)
# Crear el gráfico de barras
grafico_barras <- ggplot(conteo_edades, aes(x = Sexo, y = Edad, fill = Sexo)) +
geom_bar(stat = "identity") +
labs(title = "Distribución de Edades por Género",
x = "Género",
y = "Cantidad de Pacientes") +
theme_minimal()
# Mostrar el gráfico
print(grafico_barras)
F)Datos independientes de 3 pacientes
# Establecer una semilla aleatoria para reproducibilidad
set.seed(123)
# Seleccionar tres filas aleatorias de la base de datos historias_clinicas
datos_independientes <- historias_clinicas[sample(nrow(historias_clinicas), 3), ]
# Mostrar los datos independientes de 3 pacientes
print(datos_independientes)
## Numero_de_paciente Numero_de_Cedula Nombres_del_paciente
## 15 15 4130829 Fernando
## 19 19 9605388 Hector
## 14 14 4936793 Carmen
## Apellidos_del_paciente Edad Sexo Domicilio Ciudad Departamento
## 15 Castro 50 M Carrera 3233 Valledupar Cesar
## 19 Rios 75 M Calle 4041 Monteria Cordoba
## 14 Vargas 46 M Avenida 3031 Neiva Huila
## Numero_de_telefono Numero_de_historial_clinico Fumante Procedencia
## 15 3162737 1744 S Consulta Externa
## 19 3999615 1070 N Consulta Externa
## 14 3042092 1174 N Referido
## Fecha_Ingreso Num_Piso Num_Cama Causa_Ingreso
## 15 2024-03-11 8 23 Problemas de visión
## 19 2024-07-22 3 18 Problemas respiratorios
## 14 2024-02-18 4 27 Intoxicación alimentaria
G)Datos de 3 pacientes por identidad.
# Obtener tres números de paciente únicos aleatorios
pacientes_aleatorios <- sample(unique(historias_clinicas$Numero_de_paciente), 3)
# Filtrar los datos de los tres pacientes por los números de paciente seleccionados
datos_por_paciente <- historias_clinicas[historias_clinicas$Numero_de_paciente %in% pacientes_aleatorios, ]
# Mostrar los datos de los tres pacientes por número de paciente
print(datos_por_paciente)
## Numero_de_paciente Numero_de_Cedula Nombres_del_paciente
## 3 3 3261663 Luis
## 10 10 3111181 Elena
## 18 18 2317516 Silvia
## Apellidos_del_paciente Edad Sexo Domicilio Ciudad Departamento
## 3 Martinez 26 M Carrera 789 Cali Valle del Cauca
## 10 Diaz 22 M Calle 2223 Santa Marta Magdalena
## 18 Hernandez 23 F Carrera 3839 Sincelejo Sucre
## Numero_de_telefono Numero_de_historial_clinico Fumante Procedencia
## 3 3714862 1962 S Emergencia
## 10 3386828 1265 S Referido
## 18 3315858 1846 S Referido
## Fecha_Ingreso Num_Piso Num_Cama Causa_Ingreso
## 3 2023-03-10 5 18 Dolor abdominal
## 10 2023-10-15 5 36 Gastroenteritis
## 18 2024-06-10 2 43 Problemas cardíacos
# Cargar el paquete viridis si no está cargado
if (!requireNamespace("viridis", quietly = TRUE)) {
install.packages("viridis")
}
library(viridis)
## Loading required package: viridisLite
# Obtener la lista de causas de ingreso y contar su frecuencia
causas_ingreso <- table(historias_clinicas$Causa_Ingreso)
# Ordenar las causas de ingreso por frecuencia, de mayor a menor
causas_ingreso_ordenadas <- sort(causas_ingreso, decreasing = TRUE)
# Obtener una paleta de colores de viridis
colores <- viridis_pal()(length(causas_ingreso_ordenadas))
# Mostrar la lista de causas de ingreso y su frecuencia
print(causas_ingreso_ordenadas)
##
## Gripe Accidente automovilístico Apendicitis
## 2 1 1
## Cirugía programada Dolor abdominal Dolor de cabeza
## 1 1 1
## Dolor de espalda Dolor de garganta Dolor lumbar
## 1 1 1
## Fiebre Fractura de brazo Gastroenteritis
## 1 1 1
## Infarto de miocardio Infección respiratoria Intoxicación alimentaria
## 1 1 1
## Neumonía Problemas cardíacos Problemas de visión
## 1 1 1
## Problemas respiratorios
## 1
# Crear un gráfico de barras para visualizar las causas de ingreso más comunes y menos comunes
barplot(causas_ingreso_ordenadas, main = "Causas de Ingreso más comunes y menos comunes",
xlab = "Causa de Ingreso", ylab = "Frecuencia", col = colores,
ylim = c(0, max(causas_ingreso_ordenadas) + 5))
I)
# Instalar y cargar el paquete openxlsx si no está instalado
if (!requireNamespace("openxlsx", quietly = TRUE)) {
install.packages("openxlsx")
}
library(openxlsx)
# Definir el nombre del archivo de Excel
Taller2 <- "historias_clinicas.xlsx"
# Escribir la base de datos en el archivo de Excel
write.xlsx(historias_clinicas, Taller2)
# Imprimir un mensaje indicando que los datos se han exportado correctamente
cat("Los datos se han exportado a", Taller2, "\n")
## Los datos se han exportado a historias_clinicas.xlsx