Punto 1

Construya una base de datos de veinte (20) historias clínicas con los siguientes campos:

#A). Construya una base de datos de veinte (20) historias clínicas con los siguientes campos:
# - Identidad de Pacientes: (Número de Cédula, Nombres del paciente, Apellidos del paciente, Edad, Sexo, Domicilio, Ciudad, Departamento, Número de teléfono, Número de historial clínico, Fumante(S/N))

#Proceso de Ingreso a la entidad: (Procedencia, Fecha de ingreso, Número de piso, Número de cama, Causa de Ingreso)

# Cargando paquetes necesarios
if (!require(data.table)) {
    install.packages("data.table")
    library(data.table)
}
## Loading required package: data.table
set.seed(42)  # Fijar semilla para reproducibilidad

# Crear datos con mayor variabilidad
historias_clinicas=data.table(
  `Nº Cédula` = sprintf("%010d", sample(10000000:99999999, 20, replace = FALSE)),
  Nombres = sample(c("Ana", "Beatriz", "Carlos", "David", "Elena",
                     "Fernando", "Gloria", "Hector", "Irene", "Jorge",
                     "Karen", "Luis", "Mónica", "Néstor", "Olivia",
                     "Pablo", "Quique", "Rosa", "Sergio", "Teresa"), 20, replace = TRUE),
  Apellidos = sample(c("Pérez", "González", "Rodríguez", "López", "Martínez",
                       "Sánchez", "Ramírez", "Torres", "Fernández", "García"), 20, replace = TRUE),
  Edad = sample(18:90, 20, replace = TRUE),  # Edad desde 18 hasta 90
  Sexo = sample(c("M", "F"), 20, replace = TRUE, prob = c(0.5, 0.5)),
  Domicilio = sample(1:100, 20, replace = TRUE),
  Ciudad = sample(c("Ciudad A", "Ciudad B", "Ciudad C", "Ciudad D"), 20, replace = TRUE),
  Departamento = sample(c("Dep A", "Dep B", "Dep C"), 20, replace = TRUE),
  `Nº teléfono` = sprintf("%09d", sample(600000000:699999999, 20)),
  `Nº Historial` = sample(1000:9999, 20, replace = FALSE),
  Fumante = sample(c("S", "N"), 20, replace = TRUE, prob = c(0.4, 0.6)),  # Cambiado el porcentaje de fumantes
  Procedencia = sample(c("Clínica", "Consulta Externa", "Urgencias"), 20, replace = TRUE),
  `Fecha de Ingreso` = sample(seq(as.Date('2023-01-01'), as.Date('2023-12-31'), by="day"), 20),
  `Nº Piso` = sample(1:10, 20, replace = TRUE),  # Ampliado el rango de pisos
  `Nº Cama` = sample(1:100, 20, replace = TRUE),  # Ampliado el rango de camas
  `Causa de Ingreso` = sample(c("Apendicitis aguda", "Fractura de fémur", "Infarto agudo de miocardio", "Neumonía",
                                "Insuficiencia renal crónica", "Traumatismo craneoencefálico", "Intoxicación alimentaria",
                                "Accidente de tráfico", "Crisis asmática", "Quemaduras graves", "Hemorragia digestiva",
                                "Eclampsia", "Displasia de cadera", "Bronquitis", "Hernia discal", "Cáncer de pulmón",
                                "Leucemia", "Cataratas", "Dermatitis severa", "Hipertensión arterial",
                                "Enfermedad de Alzheimer", "Gripe", "Diabetes", "Malaria", "Esquizofrenia",
                                "Insomnio", "Anemia", "Artritis", "Sarampión", "COVID-19"), 20, replace = TRUE)  # Más causas de ingreso
)

# Mostrar la tabla creada con mayor variabilidad
print(historias_clinicas)
##      Nº Cédula  Nombres Apellidos  Edad   Sexo Domicilio   Ciudad Departamento
##         <char>   <char>    <char> <int> <char>     <int>   <char>       <char>
##  1: 0046761572     Rosa     Pérez    57      F        14 Ciudad C        Dep B
##  2: 0031025944   Mónica   Ramírez    38      M         6 Ciudad D        Dep C
##  3: 0081927011    Elena     López    74      M        47 Ciudad B        Dep C
##  4: 0086620409    David    García    59      M        43 Ciudad D        Dep B
##  5: 0013191935  Beatriz Fernández    35      F        62 Ciudad D        Dep A
##  6: 0096947863     Rosa     López    30      M        37 Ciudad B        Dep B
##  7: 0050705555   Carlos Fernández    70      F        80 Ciudad A        Dep A
##  8: 0036840945   Quique Rodríguez    71      F        31 Ciudad A        Dep B
##  9: 0096569560     Rosa  Martínez    49      M        34 Ciudad B        Dep A
## 10: 0095623715 Fernando    Torres    77      F        94 Ciudad D        Dep A
## 11: 0075333214 Fernando  Martínez    46      M        96 Ciudad D        Dep A
## 12: 0050687108  Beatriz   Sánchez    90      F         6 Ciudad B        Dep C
## 13: 0090990113   Teresa  González    60      M        86 Ciudad A        Dep B
## 14: 0066340327   Carlos  González    75      M        38 Ciudad D        Dep B
## 15: 0026962873  Beatriz    Torres    89      F        95 Ciudad C        Dep B
## 16: 0041470889 Fernando     Pérez    46      F         6 Ciudad A        Dep A
## 17: 0011547421    Jorge  González    72      F        84 Ciudad B        Dep A
## 18: 0029558286   Hector  Martínez    55      M        15 Ciudad B        Dep C
## 19: 0036605881    Elena    Torres    18      M        34 Ciudad B        Dep B
## 20: 0064764501      Ana   Ramírez    30      M        42 Ciudad D        Dep B
##      Nº Cédula  Nombres Apellidos  Edad   Sexo Domicilio   Ciudad Departamento
##     Nº teléfono Nº Historial Fumante      Procedencia Fecha de Ingreso Nº Piso
##          <char>        <int>  <char>           <char>           <Date>   <int>
##  1:   675431710         6883       S Consulta Externa       2023-03-29       1
##  2:   699358250         1462       N        Urgencias       2023-09-25       4
##  3:   664950608         7748       N          Clínica       2023-06-30       6
##  4:   656830163         3131       N        Urgencias       2023-11-03       6
##  5:   613129104         4957       S        Urgencias       2023-01-10       7
##  6:   604015372         6079       N          Clínica       2023-05-01       5
##  7:   675177022         9416       N Consulta Externa       2023-03-30       2
##  8:   636737596         5584       N Consulta Externa       2023-02-06       7
##  9:   635356673         4733       S          Clínica       2023-07-13      10
## 10:   643966087         8065       N Consulta Externa       2023-06-12       6
## 11:   675427023         7099       S        Urgencias       2023-10-10       2
## 12:   650471652         4070       S          Clínica       2023-02-15       3
## 13:   617593355         2953       N Consulta Externa       2023-10-14       1
## 14:   646195357         5248       N        Urgencias       2023-12-13       4
## 15:   680031734         8104       N          Clínica       2023-11-05       9
## 16:   659724809         7029       N          Clínica       2023-10-07       6
## 17:   663339774         1048       S Consulta Externa       2023-09-01      10
## 18:   680238312         1155       N        Urgencias       2023-07-22       7
## 19:   655660724         3217       S          Clínica       2023-08-13       3
## 20:   649173787         5387       S Consulta Externa       2023-07-25       2
##     Nº teléfono Nº Historial Fumante      Procedencia Fecha de Ingreso Nº Piso
##     Nº Cama            Causa de Ingreso
##       <int>                      <char>
##  1:      25 Insuficiencia renal crónica
##  2:      74         Displasia de cadera
##  3:      73                   Cataratas
##  4:      19           Dermatitis severa
##  5:      79           Dermatitis severa
##  6:      46           Quemaduras graves
##  7:       3            Cáncer de pulmón
##  8:      22           Fractura de fémur
##  9:      61                    Insomnio
## 10:      20                    Neumonía
## 11:      42               Esquizofrenia
## 12:      98                    Insomnio
## 13:      87                   Sarampión
## 14:      17    Intoxicación alimentaria
## 15:      82           Apendicitis aguda
## 16:      83                  Bronquitis
## 17:      46       Hipertensión arterial
## 18:      17                       Gripe
## 19:      94           Dermatitis severa
## 20:      74                   Eclampsia
##     Nº Cama            Causa de Ingreso

Punto 2

Por medio de informe gráfico clasifique por:

#Libreria para graficar
if (!require(ggplot2)) {
    install.packages("ggplot2")
    library(ggplot2)
}
## Loading required package: ggplot2
if (!require(data.table)) {
    install.packages("data.table")
    library(data.table)
}

#A) Pacientes mujeres y Hombres
ggplot(historias_clinicas, aes(x = Sexo, fill = Sexo)) +
  geom_bar() +
  labs(title = "Distribución de Pacientes por Sexo", x = "Sexo", y = "Cantidad")

#B) edad y si es fumante o no
ggplot(historias_clinicas, aes(x = as.factor(Edad), fill = Fumante)) +
  geom_bar(position = "dodge") +
  labs(title = "Distribución de Edad en relación al Hábito de Fumar", x = "Edad", y = "Cantidad")

#C) Pacientes por piso divididos por sexo
ggplot(historias_clinicas, aes(x = as.factor(`Nº Piso`), fill = Sexo)) +
  geom_bar(position = "dodge") +
  labs(title = "Distribución de Pacientes por Piso y Sexo", x = "Número de Piso", y = "Cantidad")

#D) Edad y causa de ingreso
historias_clinicas$Edad_cat=cut(historias_clinicas$Edad, breaks = c(18, 30, 45, 60, 75, 90), include.lowest = TRUE)
ggplot(historias_clinicas, aes(x = `Causa de Ingreso`, y = Edad)) +
  geom_boxplot() +
  theme(axis.text.x = element_text(angle = 90, hjust = 1)) +
  labs(title = "Edad y Causa de Ingreso", x = "Causa de Ingreso", y = "Edad")

#E) Promedio de edad (M,H)
edad_promedio=historias_clinicas[, .(Edad_Promedio = mean(Edad)), by = Sexo]
ggplot(edad_promedio, aes(x = Sexo, y = Edad_Promedio, fill = Sexo)) +
  geom_col() +
  labs(title = "Promedio de Edad por Sexo", x = "Sexo", y = "Promedio de Edad")

#F) Datos independientes de 3 pacientes
set.seed(123)  # Para reproducibilidad
muestra_pacientes=historias_clinicas[sample(.N, 3)]
print(muestra_pacientes)
##     Nº Cédula Nombres Apellidos  Edad   Sexo Domicilio   Ciudad Departamento
##        <char>  <char>    <char> <int> <char>     <int>   <char>       <char>
## 1: 0026962873 Beatriz    Torres    89      F        95 Ciudad C        Dep B
## 2: 0036605881   Elena    Torres    18      M        34 Ciudad B        Dep B
## 3: 0066340327  Carlos  González    75      M        38 Ciudad D        Dep B
##    Nº teléfono Nº Historial Fumante Procedencia Fecha de Ingreso Nº Piso
##         <char>        <int>  <char>      <char>           <Date>   <int>
## 1:   680031734         8104       N     Clínica       2023-11-05       9
## 2:   655660724         3217       S     Clínica       2023-08-13       3
## 3:   646195357         5248       N   Urgencias       2023-12-13       4
##    Nº Cama         Causa de Ingreso Edad_cat
##      <int>                   <char>   <fctr>
## 1:      82        Apendicitis aguda  (75,90]
## 2:      94        Dermatitis severa  [18,30]
## 3:      17 Intoxicación alimentaria  (60,75]
#G) Datos de 3 pacientes por identidad
ids_seleccionados=c("0012345678", "0023456789", "0034567890")
pacientes_seleccionados=historias_clinicas[`Nº Cédula` %in% ids_seleccionados]
print(pacientes_seleccionados)
## Empty data.table (0 rows and 17 cols): Nº Cédula,Nombres,Apellidos,Edad,Sexo,Domicilio...
#H) Lista de causas de ingreso
causas_ingreso=unique(historias_clinicas$`Causa de Ingreso`)
print(causas_ingreso)
##  [1] "Insuficiencia renal crónica" "Displasia de cadera"        
##  [3] "Cataratas"                   "Dermatitis severa"          
##  [5] "Quemaduras graves"           "Cáncer de pulmón"           
##  [7] "Fractura de fémur"           "Insomnio"                   
##  [9] "Neumonía"                    "Esquizofrenia"              
## [11] "Sarampión"                   "Intoxicación alimentaria"   
## [13] "Apendicitis aguda"           "Bronquitis"                 
## [15] "Hipertensión arterial"       "Gripe"                      
## [17] "Eclampsia"

Punto 3

Exportar base de datos a Excel

# Instalar el paquete necesario
if (!require(openxlsx)) {
    install.packages("openxlsx")
    library(openxlsx)
}
## Loading required package: openxlsx
# Crear un nuevo archivo de Excel en el directorio actual
wb=createWorkbook()

# Añadir una hoja al libro de trabajo
addWorksheet(wb, "Historias Clínicas")

# Escribir los datos en la hoja
writeDataTable(wb, sheet = "Historias Clínicas", x = historias_clinicas)

# Guardar el archivo en el directorio actual
ruta_archivo=file.path(getwd(), "Historias_Clinicas.xlsx")
saveWorkbook(wb, file = ruta_archivo, overwrite = TRUE)

# Verificar el directorio de trabajo actual
getwd()  # Muestra el directorio de trabajo actual
## [1] "/cloud/project"