install.packages("data.table") ## Paquete para trabajar datos
install.packages("dplyr") ## Paquete para trabajar datos
install.packages("ggplot2") ## Paquete para visualizar
install.packages("plotly") ## Paquete para visualizar de forma interactiva
install.packages("treemap") ## Paquete para hacer visualizaciones de treemap
install.packages("ggalluvial") ## Paquete para hacer visualizaciones de diagrama de flujos
install.packages("lubridate") ## Paquete para trabajar con fechas
install.packages("leaflet") ## Paquete para realizar mapas
library(data.table)
library(dplyr)
library(ggplot2)
library(plotly)
library(treemap)
library(ggalluvial)
library(leaflet)
library(lubridate)
rm(list=ls()) ## Limpiar el Environment
ive<-fread("DATOS_IVE_2018_2020.csv")
## fread solo sirve para abrir formato .csv y es una función de paquete data.table
ive <- ive %>%
select(-starts_with("PSI"),-starts_with("ASIST"),-starts_with("DUPLA"),-starts_with("VISITA"))
character
a integer
.class(ive$`edad de la mujer`)
## [1] "character"
ive$`edad de la mujer`<-as.integer(ive$`edad de la mujer`)
class(ive$`edad gestacional concurrencia`)
## [1] "character"
ive$`edad gestacional concurrencia`<-as.integer(ive$`edad gestacional concurrencia`)
class(ive$`mes de concurrencia`)
## [1] "character"
ive$`mes de concurrencia`<-as.integer(ive$`mes de concurrencia`)
class(ive$`Año concurrencia`)
## [1] "integer"
ive$`Año concurrencia`<-as.integer(ive$`Año concurrencia`)
causal | tipo_causa |
---|---|
Causa 1 | Peligro mujer |
Causa 2 | Inviabilidad fetal |
Causa 3 | Violación |
Sintaxis data.table: DT[i,j,by] i: fila j: columnas by: “según”
ive[causal=="Causal 1",tipo_causa:="Peligro mujer"]
ive[causal=="Causal 2",tipo_causa:="Inviabilidad fetal"]
ive[causal=="Causal 3",tipo_causa:="Violación"]
ggplot2
ggplot()
ggplot(data=ive,aes(x=`edad de la mujer`))
Se categoriza por un rango de valores dentro de la variable numérica
ggplot(data=ive,aes(x=`edad de la mujer`)) + geom_histogram()
ggplot(data=ive[`Año concurrencia`==2018],aes(x=`edad de la mujer`)) + geom_histogram()
ggplot(data=ive[`Año concurrencia`==2018],aes(x=`edad de la mujer`)) + geom_histogram(bins=100)
Mostrar cuántas observaciones tenemos dentro de una variable categórica
Para realizar lo anterior, primero renombraremos la variable previsión de salud
por prevision
.
ive<-rename(ive,prevision=`previsión de salud`)
Agruparemos las categorías que son iguales.
ive[prevision=="SIN PREVISION",prevision:="NINGUNA"]
ive[prevision=="SISTEMA PREVISIONAL DE LAS FFAA",prevision:="CAPREDENA"]
ive[prevision=="Fonasa",prevision:="FONASA"]
Realizaremos el bar-plot.
ggplot(ive,aes(x=prevision)) + geom_bar()
ggplot(ive,aes(x=prevision, fill=tipo_causa)) + geom_bar()
position
cambia la posición en el gráfico de las barras por la variable dentro del fill, en este caso el tipo_causa
.ggplot(ive,aes(x=prevision, fill=tipo_causa)) + geom_bar(position = "stack")
ggplot(ive,aes(x=prevision, fill=tipo_causa)) + geom_bar(position = "dodge")
ggplot(ive,aes(x=prevision, fill=tipo_causa)) + geom_bar(position = "fill")
ggplot(ive[prevision!="sin informacion"],aes(x=prevision, fill=tipo_causa)) + geom_bar(position = "dodge") + facet_wrap(facets = "`Año concurrencia`")
ggplot(ive[prevision!="sin informacion"],aes(x=prevision, fill=tipo_causa)) + geom_bar(position = "dodge") +
facet_wrap(facets = "`Año concurrencia`") +
labs(x="Previsión", y="Frecuencia", title = "Frecuencia IVE", subtitle = "Por tipo de previsión y causa", caption = "Fuente: Interrupción Voluntaria del Embarazo, MINSAL - Gobierno de Chile" ) +
scale_fill_discrete(name="Tipo de Causa") +
theme(axis.text.x = element_text(angle=85, vjust=0.6))
Muestra la tendencia temporal de una variable numérica
Para esto tenemos que calcular la cantidad de casos totales en cada año y mes por causa.
ive1<-ive[`Decisión De la mujer sobre su embarazo`=="INTERRUMPIR EL EMBARAZO",.N,by=.(`Año concurrencia`,`mes de concurrencia`,tipo_causa)]
# .N sirve para contar
Luego creamos la variable fecha
ive1[,fecha:=as.Date(paste0(`Año concurrencia`,"-",`mes de concurrencia`,"-01"))]
Ahora realizamos el gráfico.
ggplot(ive1, aes(x=fecha, y=N, colour=tipo_causa)) + geom_line()
ggplot(ive1, aes(x=fecha, y=N, colour=tipo_causa)) + geom_line() +
labs(x="Año", y="Frecuencia", title = "Frecuencia IVE", subtitle = "Por año y causa", caption = "Fuente: Interrupción Voluntaria del Embarazo, MINSAL - Gobierno de Chile" )+
scale_color_discrete(name="Tipo de Causa")
plotly
en nuestro gráfico de línea.Para esto tenemos que crear un objeto con nuestro gráfico anterior.
line<-ggplot(ive1, aes(x=fecha, y=N, colour=tipo_causa)) + geom_line() +
labs(x="Año", y="Frecuencia", title = "Frecuencia IVE", subtitle = "Por año y causa", caption = "Fuente: Interrupción Voluntaria del Embarazo, MINSAL - Gobierno de Chile" )+
scale_color_discrete(name="Tipo de Causa")
Aplicamos la función ggplotly
.
ggplotly(line)
Muestra el valor de dos variables numéricas o una numérica y otra categórica en un gráfico de dos dimensiones
ggplot(ive, aes(`edad gestacional concurrencia`, `edad de la mujer`)) + geom_point()
ggplot(ive, aes(`edad de la mujer`,`edad gestacional concurrencia`, color=`Decisión De la mujer sobre su embarazo`)) + geom_point() + facet_wrap(facets = "tipo_causa")
ggplot(ive, aes(`edad de la mujer`,`edad gestacional concurrencia`, color=`Decisión De la mujer sobre su embarazo`)) + geom_point() + facet_wrap(facets = c("tipo_causa","`Año concurrencia`"))
## Warning: Removed 68 rows containing missing values (geom_point).
Muestra como se relacionan dos variables categóricas dado un “flujo”
Para responder esta pregunta, necesitamos cargar la base de establecimientos, que contiene la información de los centros de salud.
establecimientos<-fread("Establecimientos.csv")
Unimos los nuevos datos a la base IVE.
ive<-merge(ive,establecimientos,by="establecimiento")
Ahora hay que identificar la cantidad de mujeres que se atienden según su región, la región del establecimiento donde se atienden y el año de concurrencia.
Movimientos<-ive[,.N, by=.(`Región de residencia de la mujer`,idregion,`Año concurrencia`)]
Tenemos lista toda la información para nuestro gráfico.
ggplot(Movimientos, aes( x=`Año concurrencia`, y=N, alluvium =`Región de residencia de la mujer`, fill =`Región de residencia de la mujer`, colour = `Región de residencia de la mujer`)) +
geom_alluvium(alpha = .5, decreasing = FALSE) +
scale_x_continuous(breaks = seq(2018, 2020, 1)) +
facet_wrap(facets = "idregion")
treemap(ive, index="Región de residencia de la mujer", vSize = "id", type="value", title="Cantidad de personas por región")
Para esto es importante que las variables de latitud y longitud sean numéricas
ive$lat<-as.numeric(ive$lat)
ive$lng<-as.numeric(ive$lng)
Ahora realizamos el mapa
leaflet(ive)%>%
addTiles()%>%
addMarkers()
Seteamos la vista
leaflet(ive)%>%
addTiles()%>%
setView(lng = -71.5, lat = -33, zoom = 11)%>%
addMarkers()
Algo relevante que se puede agregar a los marcadores es las atenciones totales que realizan los centros de salud según la causal de ingreso
ive2<-ive[,.N,by=.(establecimiento,tipo_causa)]
Luego creamos el texto que va a ir en cada marcador
mytext<-paste("Nombre establecimiento:",ive$establecimiento,"<br/>","Tipo de establecimiento: ", ive$tipoest,"<br/>", "Atenciones Peligro madre: ", ive2[tipo_causa=="Peligro mujer"]$N,"<br/>", "Atenciones Inviabilidad fetal: ", ive2[tipo_causa=="Inviabilidad fetal"]$N,"<br/>", "Atenciones Violación: ", ive2[tipo_causa=="Violación"]$N,sep="")
Finalmente incorporamos el texto en el mapa
leaflet(ive)%>%
addTiles()%>%
setView(lng = -71.5, lat = -33, zoom = 11)%>%
addMarkers(popup=mytext)