data.table
+ rmarkdown
Este control tiene como finalidad evaluar el trabajo de base de datos. Se evaluará la correcta ejecución del código y el uso eficiente de las herramientas de codificación entregadas.
rmarkdown
El formato de respuesta es el siguiente:
El formato tiene un puntaje asignado dentro de la nota. (3 puntos)
Importante: Deben ser suprimidos los mensajes y warnings del informe.
El Ministerio de Salud (MINSAL) necesita realizar un levantamiento de información para analizar la situación en la que se encuentran sus hospitales y las clínicas del país. Esta información es crucial para entender cómo opera la atención en los diferentes centros de salud. Es por esto, que el MINSAL lo contrató como analista de datos para preparar un informe descriptivo sobre el sistema de atención de hospitales y clínicas a nivel nacional.
Limpie el enviroment para comenzar desde cero. (1 punto)
rm(list=ls())
Cargue los paquetes necesarios para trabajar con DT. (1 punto)
library(data.table)
Abra las bases de datos egresos y Enfermedades. (3 puntos)
Pista: Para los archivos .RDS utilice la función readRDS. Ojo que la base de datos no se abrirá como un DT, por lo tanto tiene que transformarla.
egresos<- readRDS("egresos.RDS")
egresos<-as.data.table(egresos)
Enfermedades<- fread("Enfermedades.csv")
Muestre cuántas personas de cada región hay en la base egresos
. (3 puntos)
egresos[,.N,by=REGION]
## REGION N
## 1: 2 47329
## 2: 13 516477
## 3: 14 23380
## 4: 99 4804
## 5: 5 128170
## 6: 15 18023
## 7: 1 26275
## 8: 6 46286
## 9: 10 64371
## 10: 12 20623
## 11: 3 15970
## 12: 8 18543
## 13: 9 18721
## 14: 7 16674
## 15: 4 51373
## 16: 591 156
## 17: 11 1707
## 18: 2000 240
## 19: 51 72
## 20: 54 84
Solucione el problema de la pregunta anterior y considere solo las 15 regiones de Chile. (3 puntos)
egresos<-egresos[REGION<=15]
Existe una inconsistencia en la base de datos egresos
, ya que hay personas que tienen más días de estadía en el hospital que días vividos. Por lo tanto, debemos eliminar estos casos de la base de datos. Para esto, cree una nueva variable que corresponda a los días de vida de una persona y elimine aquellas observaciones que tengan más días de estadía en un hospital que días de vida. (5 puntos)
egresos[,dias_vida:= EDAD*365]
egresos<-egresos[!DIAS_ESTAD>dias_vida]
¿Cuántas personas hay según previsión en la base egresos
? (3 puntos)
egresos[,.N, by=Prevision]
## Prevision N
## 1: FONASA 649267
## 2: ISAPRE 225594
## 3: DIPRECA 21204
## 4: CAPREDENA 20925
## 5: OTRA 20664
## 6: SIN PREVISION 23624
## 7: IGNORADA 1834
Realice un resumen de las características de las personas de la base egresos
según su previsión y sexo. Este resumen debe contener: edad promedio y días de estadía promedio en un hospital. (5 puntos)
egresos[,.(Edad_promedio=mean(EDAD),Dias_promedio=mean(DIAS_ESTAD)), by=.(Prevision,SEXO)]
## Prevision SEXO Edad_promedio Dias_promedio
## 1: FONASA Hombre 48.12688 8.335111
## 2: FONASA Mujer 42.38479 5.500891
## 3: ISAPRE Hombre 41.78297 3.250066
## 4: ISAPRE Mujer 40.16749 2.992523
## 5: DIPRECA Mujer 50.52642 5.163402
## 6: CAPREDENA Mujer 53.71241 7.666363
## 7: OTRA Mujer 44.34956 4.966185
## 8: SIN PREVISION Mujer 40.27639 2.936536
## 9: SIN PREVISION Hombre 41.22145 5.380432
## 10: CAPREDENA Hombre 53.25608 7.920968
## 11: OTRA Hombre 45.56299 6.449604
## 12: DIPRECA Hombre 50.53459 6.226464
## 13: IGNORADA Hombre 41.42471 9.406673
## 14: IGNORADA Mujer 37.87586 5.674483
## 15: FONASA Otro 29.00000 11.250000
## 16: SIN PREVISION Otro 52.00000 6.000000
Cree un nuevo objeto que corresponda a un merge entre la base egresos
y Enfermedades
. (5 puntos)
Pista: la variable identificador en la base egresos
se llama Tipo_Tratamiento y en la base Enfermedades
se llama Codigo. Por lo tanto, puede que renombrar una variable para que queden con el mismo nombre.
names(egresos)[1]<-"Codigo"
base_nueva<-merge(egresos,Enfermedades, by="Codigo")
Ahora queremos identificar, con este nuevo objeto, la proporción de enfermos que hay por región y tipo de tratamiento,es decir, del total de enfermos por región cuántos corresponden a cada tratamiento. (8 puntos)
Pista: Para esto puede crear un objeto que contenga el total de enfermos por región, otro objeto que contenga el total de enfermos por tratamiento y región y luego unirlos para obtener el porcentaje.
Tabla1<-base_nueva[,.N,by=REGION]
Tabla2<-base_nueva[,.N,by=.(REGION,Tratamiento)]
TABLA<- merge(Tabla1,Tabla2, by="REGION")
TABLA[,Porcentaje:=(N.y/N.x)*100]
TABLA
## REGION N.x
## 1: 1 25282
## 2: 1 25282
## 3: 1 25282
## 4: 1 25282
## 5: 1 25282
## ---
## 266: 15 17308
## 267: 15 17308
## 268: 15 17308
## 269: 15 17308
## 270: 15 17308
## Tratamiento
## 1: Ciertas enfermedades infecciosas y parasitarias
## 2: Neoplasias
## 3: Enfermedades de la sangre y de los órganos hematopoyéticos y otros trastornos que afectan el mecanismo de la inmunidad
## 4: Enfermedades endocrinas, nutricionales y metabólicas
## 5: Trastornos mentales y del comportamiento
## ---
## 266: Embarazo, parto y puerperio
## 267: Malformaciones congénitas, deformidades y anomalías cromosómicas
## 268: Síntomas, signos y hallazgos anormales clínicos y de laboratorio, no clasificados en otra parte
## 269: Traumatismos, envenenamientos y algunas otras consecuencias de causa externa
## 270: Factores que influyen en el estado de salud y contacto con los servicios de salud
## N.y Porcentaje
## 1: 414 1.6375287
## 2: 744 2.9428052
## 3: 884 3.4965588
## 4: 693 2.7410806
## 5: 889 3.5163357
## ---
## 266: 3584 20.7071874
## 267: 128 0.7395424
## 268: 155 0.8955396
## 269: 1810 10.4575919
## 270: 568 3.2817194
¿En qué región se atienden los individuos que tienen que realizarse cirugías y de qué región provienen?. (5 puntos)
Pista: Para responder esta pregunta, primero debe identificar la cantidad de personas que se realizan intervenciones quirúrgicas según su región y la región del establecimiento donde se atienden.
Movimientos<-base_nueva[INTERV_Q=="Sí",.N, by=.(REGION,CodRegion_ESTAB)]
¿Las personas suelen atenderse en sus regiones?. Para poder responder esta pregunta, es recomendable modificar el objeto anterior y así poder visualizar mejor la información. Para esto, se aconseja realizar un reshape
y reemplazar los NA
por valores 0. (5 puntos)
Movimientos<-dcast(Movimientos,REGION~CodRegion_ESTAB)
Movimientos[is.na(Movimientos)]<-0
Movimientos
## REGION 1 2 3 4 5 6 7 8 9 10 11 12
## 1: 1 12478 96 4 14 75 0 1 0 0 1 0 0
## 2: 2 53 22553 13 33 84 9 2 1 0 3 0 1
## 3: 3 1 98 6505 179 62 5 0 0 0 0 0 0
## 4: 4 7 47 35 23801 639 4 0 0 0 4 0 0
## 5: 5 2 11 3 10 58377 30 3 1 0 21 3 3
## 6: 6 2 0 3 2 164 19303 28 0 0 5 1 1
## 7: 7 0 9 4 1 46 216 4237 11 1 8 1 0
## 8: 8 4 14 5 3 97 10 2 3154 8 30 0 1
## 9: 9 1 8 1 4 18 14 1 3 4586 146 1 1
## 10: 10 0 1 0 1 64 11 0 2 0 25705 6 9
## 11: 11 0 0 0 1 1 0 0 0 0 24 468 0
## 12: 12 0 0 0 0 63 0 0 2 0 45 4 9700
## 13: 13 17 34 19 47 692 173 11 4 4 171 7 6
## 14: 14 0 1 1 0 14 1 0 2 0 303 1 1
## 15: 15 53 42 0 1 21 0 0 0 0 2 0 0
## 13 14 15
## 1: 1010 0 13
## 2: 2384 0 2
## 3: 1090 0 0
## 4: 2706 4 1
## 5: 5348 3 0
## 6: 4748 3 0
## 7: 4178 1 0
## 8: 1789 11 0
## 9: 1266 91 0
## 10: 1336 292 0
## 11: 34 2 0
## 12: 584 6 0
## 13: 267645 25 5
## 14: 405 8618 0
## 15: 567 1 7999
Realice el mismo ejercicio de la pregunta 11 y 12, pero considerando a aquellas personas que pertenecen a Fonasa y se realizan intervenciones quirúrgicas.¿Cambia en algo el análisis con respecto a las preguntas anteriores? (5 puntos)
Movimientos1<-base_nueva[INTERV_Q=="Sí" & Prevision=="FONASA",.N, by=.(REGION,CodRegion_ESTAB)]
Movimientos1<-dcast(Movimientos1,REGION~CodRegion_ESTAB)
Movimientos1[is.na(Movimientos1)]<-0
Movimientos1
## REGION 1 2 3 4 5 6 7 8 9 10 11 12
## 1: 1 8169 43 2 5 18 0 1 0 0 1 0 0
## 2: 2 18 12693 11 17 24 7 1 1 0 2 0 1
## 3: 3 1 69 5074 97 43 2 0 0 0 0 0 0
## 4: 4 3 18 16 19988 443 3 0 0 0 3 0 0
## 5: 5 1 1 1 9 41530 13 2 1 0 14 2 3
## 6: 6 0 0 0 0 142 15410 20 0 0 3 0 1
## 7: 7 0 1 2 0 27 159 3934 11 0 5 1 0
## 8: 8 2 3 1 3 29 8 1 3076 7 23 0 1
## 9: 9 0 2 1 3 7 13 1 3 4291 125 1 1
## 10: 10 0 0 0 1 18 10 0 2 0 18136 4 9
## 11: 11 0 0 0 0 1 0 0 0 0 21 428 0
## 12: 12 0 0 0 0 10 0 0 2 0 34 4 6297
## 13: 13 10 7 12 28 406 135 9 4 2 119 2 4
## 14: 14 0 1 1 0 6 1 0 2 0 108 0 0
## 15: 15 15 18 0 1 9 0 0 0 0 2 0 0
## 13 14 15
## 1: 354 0 3
## 2: 521 0 1
## 3: 405 0 0
## 4: 1040 2 0
## 5: 1781 2 0
## 6: 2063 3 0
## 7: 1813 1 0
## 8: 689 11 0
## 9: 506 69 0
## 10: 413 166 0
## 11: 21 2 0
## 12: 134 4 0
## 13: 145696 19 0
## 14: 134 7262 0
## 15: 224 1 6872