Pregunta 1

Limpiamos el environment y cargamos los paquetes necesarios Cargamos la base de datos de los accidentes de bici. Junto con cargar la base en formato shape y luego modificarla para usar data table.

Pregunta 2

Muestre el número total de accidentes según su tipo (ayuda: utilice TIPO_ACCID).

accbici= bici[,.(total=.N), by=.(TIPO_ACCID)]
ggplot(accbici, aes(x=TIPO_ACCID, y= total)) + geom_bar(stat="identity")

## Pregunta 3

Si bien el gráfico anterior muestra la información pedida, no se encuentra bien desplegada (dificil de leer). En consecuencia, es necesario perfeccionarlo:

ggplot(accbici,aes(x=reorder(TIPO_ACCID,total),y=total)) +
  geom_bar(stat='identity') +
  labs(title = 'Cantidad de accidentes de bicicletas', subtitle = 'Según tipo de accidente',
       caption = 'Datos año 2016 - IDE Chile',
       x = 'Tipo de accidente',y = 'N° de accidentes')+
  theme(axis.text.x = element_text(angle=90, vjust=0.5)) + scale_fill_brewer(palette = "Blues")

Muestre, mediante un histográma y gráfico de densidad, la distribución de accidentes según la hora de ocurrencia (ayuda: HORA puede transformarse de caracter a tiempo mediante función as.ITime).

bici[,HORA:= as.ITime(HORA)]
ggplot(bici, aes(x=HORA))+ 
  geom_histogram()+
  scale_x_time()#con esto se arregla la escala del tiempo en el eje x
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

ggplot(bici, aes(x=HORA))+
  geom_density()+
  geom_histogram()+
  scale_x_time()
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

## Pregunta 5

Para los dos gráficos anteriores, haga las siguientes modificaciones:

ggplot(bici,aes(x=HORA,fill=TIPO__CONA)) +
  geom_histogram(color='black') + #haciendo un grafico para cada categoría se pone ~ para ver por qué variable se va a separar
  facet_wrap(~TIPO__CONA,scale='free_y') +
  scale_x_time() +
  theme_classic() +
  theme(legend.position = 'none')
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

ggplot(bici, aes(x=HORA))+
  geom_density()+
  geom_vline(aes(xintercept= mean(HORA), color='Media'))+
  geom_vline(aes(xintercept=median(HORA), color='Mediana'))+
  scale_x_time()+
  theme_classic()+
  theme(legend.position = "bottom")+
  labs(colour=NULL) +
  scale_y_continuous(labels=number_format(suffix = '%', scale=100))

#MAPAS ## Pregunta 6

Haga un mapa exploratorio (en ggplot2) sobre la ubicación de los accidentes Recomendación: usar base mapa_zonas (chilemapas) y filtrar por región metropolitana.

ggplot(bici, aes(geometry=geometry))+
  geom_sf()+ #se usa para hacer mapas en ggplot+
  geom_sf(data=mapa_zonas %>% filter(codigo_region=='13'), fill=NA)+
  coord_sf(xlim= c(-70.85,-70.45), ylim = c(-33.65,-33.3))+
  theme_void()#para quitarle el sistema de coordenadas

## Pregunta 7

Mediante el paquete leaflet, muestre el número de accidentes por comuna. Para lo anterior, utilice la base “mapa_comunas” (chilemapas) y filtre por la región Metropolitana. Haga un merge entre dicho mapa y los datos de accidentes por comuna. Transforme dicho objeto a clase “sf” y modifique la proyección del objeto a “+proj=longlat +datum=WGS84”. Enchulelo.

mapa_comunas = mapa_comunas %>% filter(codigo_region == '13')

bici=bici[,.(total=.N),by=.(COD_COMUNA)]
bici[,COD_COMUNA:=as.character(COD_COMUNA)]

mapa=merge(x=mapa_comunas, y=bici, by.y="COD_COMUNA", by.x='codigo_comuna')
mapa= st_as_sf(mapa)
mapa=st_transform(mapa,crs ="+proj=longlat +datum=WGS84" )
#queremos transformar un mapa en una proyección

pal= colorBin("Set3", domain=c(mapa$total))
leaflet(mapa) %>%
  addTiles()%>%
  addPolygons(fillColor = ~pal(total), fillOpacity = 0.5, weight = 2, col="black", dashArray = 'J', 
              label = ~paste("Accidentes:", round(total, 2)))%>%
  addLegend(pal = pal, values = ~total, position = "bottomright", title = ~paste0("Total accidentes")) %>%
  addScaleBar(position="topright")