Manejo de Bases de datos con 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.

Formato:

El formato de respuesta del control es el siguiente:

  1. Antes de la respuesta debes agregar un encabezado de tercer nivel (###) con Pregunta y el número de pregunta.
  2. Abajo del encabezado, debe estar escrita la pregunta.
  3. Agregar los códigos en chunks e incluir el output de ser necesario.
  4. La explicación de las respuestas (análisis) debe ir como texto, fuera del chunk.
  5. El título del informe debe ser “Control 1” y el nombre del alumno debe ir en autor.
  6. El control se debe entregar en formato PDF. Deberán subir sus respuestas en PDF además de su archivo en formato R Markdown como respaldo. Se evaluarán solo sus respuestas en el informe en PDF
  7. Recuerde que puede usar las “cheatsheets” disponibles en webcursos para apoyarse.
  8. El control es individual y sin preguntas.

El formato tiene puntaje asignado en la nota. (3 puntos)

Importante: Deben ser suprimidos los mensajes y warnings en el informe.

Pregunta 1

Limpie el environment para comenzar a trabajar. (1 punto)

rm(list=ls())

Pregunta 2

Cargue los paquetes necesarios para trabajar con DT. (1 punto)

library(data.table)

Pregunta 3

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")

Pregunta 4

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

Pregunta 5

Repita la pregunta anterior, pero esta vez considerando solo a las 15 regiones de Chile

egresos<-egresos[REGION<=15,]
egresos[,.N,by=REGION]
##     REGION      N
##  1:      2  47329
##  2:     13 516477
##  3:     14  23380
##  4:      5 128170
##  5:     15  18023
##  6:      1  26275
##  7:      6  46286
##  8:     10  64371
##  9:     12  20623
## 10:      3  15970
## 11:      8  18543
## 12:      9  18721
## 13:      7  16674
## 14:      4  51373
## 15:     11   1707

Pregunta 6

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]

Pregunta 7

¿Cuántas personas hay según previsión en la base egresos?

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

Pregunta 8

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

Pregunta 9

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")

Pregunta 10

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

Pregunta 11

¿En qué región se atienden quienes 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úrjicas 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)]

Pregunta 12

¿Las personas suelen atenderse en la misma región donde viven? Para respoder esta pregunta, puedes modificar el objeto creado en la pregunta 11 y así podrás visualizar mejor la información. ¿Cuántas personas se realizan intervenciones quirúrgicas en su región y cuantas en otra?

movimientos[,mismaregion:=0]
movimientos[REGION==CodRegion_ESTAB, mismaregion:=1]
movimientos[mismaregion==1,sum(N)]
## [1] 475129
movimientos[mismaregion==0,sum(N)]
## [1] 32200

BONUS

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í",.N, by=.(REGION,CodRegion_ESTAB,Prevision)]
movimientos1[REGION==CodRegion_ESTAB, mismaregion:=1]
movimientos1[mismaregion==1, sum(N), by=Prevision]
##        Prevision     V1
## 1:        FONASA 298856
## 2:        ISAPRE 137451
## 3: SIN PREVISION  13161
## 4:     CAPREDENA   8207
## 5:          OTRA   9773
## 6:       DIPRECA   6711
## 7:      IGNORADA    970
movimientos1[mismaregion==1, sum(N)]
## [1] 475129