Update exercice_fr.Rmd

parent 0efe2ca3
......@@ -2,73 +2,84 @@
title: "John Snow’s Cholera data"
author: "Emilie Rojas"
date: "4/16/2020"
output: pdf_document
output:
pdf_document: default
html_document: default
---
```{r packages, include=FALSE}
library(OpenStreetMap)
library(leaflet)
library(rgeos)
library(sp)
library(sf)
library(stringr)
library(tidyr)
```
```{r import data, include=FALSE}
Pour commencer cette étude, je suis allée télécharger les données sur le site internet :
```{r}
data_url = "http://rtwilson.com/downloads/SnowGIS_SHP.zip"
```
__1) Téléchargement des données__
Pour éviter que les données ne soient plus disponibles sur le site URL, j'ai fait une copie locale sur mon ordinateur qui sera utilisé si les odnnées de l'URL ne sont utilisables. Puis j'ai dézippé le fichier local afin de pouvoir lire les documents avec les données qui m'intéressent.
```{r}
data_SHP = "SnowGIS_SHP.zip"
if (!file.exists(data_SHP)) {
download.file(data_url, data_file, method="auto")
download.file(data_url, data_file, method="auto") #
}
unzip(data_SHP, overwrite = TRUE) #pour le dézipper et pouvoir ouvrir le fichier sur l'ordinateurs
unzip(data_SHP, overwrite = TRUE) #pour le dézipper et pouvoir ouvrir le fichier sur l'ordinateur
```
__2) Importation des données sur R__
Ouverture et lecture des documents (qui sont sous forme "shp") qui se trouvaient dans le fichier zippé. Ce document comportant des coordonnées GPS, je les transforme en caractère simple (type vecteur) afin qu'ils soient lu par R.
```{r}
library(magrittr) #pour utiliser le signe : %>%
library(sf) #pour utilsier la fonction "st_read"
morts <- st_read(dsn = '~/Desktop/FUN MOOC 2020/recherche reproductible/SnowGIS_SHP/Cholera_Deaths.shp') %>%
st_transform(morts, crs = 4326)
pompes <- st_read(dsn = '~/Desktop/FUN MOOC 2020/recherche reproductible/SnowGIS_SHP/Pumps.shp') %>%
st_transform(pompes, crs = 4326)
```
```{r, include=FALSE}
morts <- st_read(dsn = '~/Desktop/FUN MOOC 2020/recherche reproductible/SnowGIS_SHP/Cholera_Deaths.shp') %>%
st_transform(morts, crs = 4326) #lecture du fichier shp avec st_read, et transformation des coordonnées pour en simple caractère pour pouvoir les modifier
__3) Préparation des données__
Je transforme la colonne "geometry" qui contient les coordonées de type vecteur, en deux colonnes pour longitude et latitude.
```{r}
library(stringr) #pour utiliser la fonction stre_replace
library(tidyr) #pour utiliser la fonction separate
morts$geom<- as.character(morts$geometry) #creation d'une nouvelle variable "geom" où je copie les données de la colonne geometry pour pouvoir la modifier en tant que "character" et non en tant que fishier shp
morts$geom<-str_replace(morts$geom, pattern = "[c]*[(]", replacement = "") #pour enlever les "c()"
morts$geom<-str_replace(morts$geom, pattern = "[)]", replacement = "") #pour enlever les "c()"
morts<-separate(data=morts,col = "geom",
into = c("long","lat"), sep = ",") #pour séparer la colonne en 2 colonnes via "," indiquant la longitude et latitude
```
```{r}
morts #nombre de morts du Choléra et leur coordonnées
```
```{r, include=FALSE}
pompes <- st_read(dsn = '~/Desktop/FUN MOOC 2020/recherche reproductible/SnowGIS_SHP/Pumps.shp') %>% st_transform(pompes, crs = 4326)
pompes$geom<- as.character(pompes$geometry)
pompes$geom<-str_replace(pompes$geom, pattern = "[c]*[(]", replacement = "")
pompes$geom<-str_replace(pompes$geom, pattern = "[)]", replacement = "")
pompes<-separate(data=pompes,col = "geom",
into = c("long","lat"), sep = ",")
pompes$Id<-c("P1 BD","P2","P3","P4","P5","P6","P7","P8") #ajout des nom des pompes avec BD pour Brod Street
pompes$Id<-c("P1 BD","P2","P3","P4","P5","P6","P7","P8") #ajout des nom des pompes avec BD pour Broad Street
```
__4) Affichage des données pour vérifier la préparation__
```{r}
morts #nombre de morts du Choléra et leur coordonnées
pompes #coordonnées des pompes liées à la propagation du choléra.
```
Question 1 : Londres a bien sûr évolué depuis 1854, mais une carte d’aujourd’hui est tout à fait utilisable comme support pour ces données historiques. À partir des données numériques, réalisez une carte dans l’esprit de celle de John Snow. Montrez les lieux de décès avec des symboles dont la taille indique le nombre de décès. Indiquez sur la même carte la localisation des pompes en utilisant une autre couleur et/ou un autre symbole.
_Question 1 : Londres a bien sûr évolué depuis 1854, mais une carte d’aujourd’hui est tout à fait utilisable comme support pour ces données historiques. À partir des données numériques, réalisez une carte dans l’esprit de celle de John Snow. Montrez les lieux de décès avec des symboles dont la taille indique le nombre de décès. Indiquez sur la même carte la localisation des pompes en utilisant une autre couleur et/ou un autre symbole._
```{r, echo=FALSE}
morts$long<-as.numeric(morts$long) #pour pouvoir tracer la carte il faut des variables numeriques
morts$lat<-as.numeric(morts$lat)
pompes$long<-as.numeric(pompes$long)
pompes$lat<-as.numeric(pompes$lat)
```
__CREATION DE LA CARTE__
```{r}
library(leaflet)
map <- leaflet(morts) %>% ##leaflet permet de creer des cartes dynamiques
addTiles() %>% #pour avoir les noms de rues sur la carte
addCircleMarkers(data=morts, ~long, ~lat,radius= ~sqrt(Count)*5, color = "#a500a5", fillOpacity = 0.01) %>% #pour représenter les morts proportionnellement à leur nombre avec la fonction radius
......@@ -79,18 +90,19 @@ Cliquer sur les symboles représentant les pompes pour lire leur noms sur la car
2. Par la suite, essayez de trouver d'autres façons pour montrer que la pompe de Broad Street est au centre de l'épidémie. Vous pouvez par exemple calculer la densité des décès dans le quartier et l'afficher sur la carte, mais n'hésitez pas à expérimenter avec d'autres approches.
_Question 2. Par la suite, essayez de trouver d'autres façons pour montrer que la pompe de Broad Street est au centre de l'épidémie. Vous pouvez par exemple calculer la densité des décès dans le quartier et l'afficher sur la carte, mais n'hésitez pas à expérimenter avec d'autres approches._
J'éai décidé de tracer un périmètre sphérique aurout de chaque pompe d'un certain diamètre (mais je n'ai pas compris comment lui dire le nombre de mètre voulus)
```{r, echo=FALSE}
library(rgeos) #pour utilsier la fonction coordinate
pompes1 <- data.frame(lat=pompes$lat, long= pompes$long, noms=pompes$Id) #transformation en dataframe pour l'utiliser dans la création des perimetre autour des pompes que j'ai nommé de P1 à P8 avec P1 la pompes de Broad Street
coordinates(pompes1) <- ~long + lat #pour rendre les coordonnées des données spatiales
pointsBuffer <- gBuffer(pompes1, width=0.001, byid = TRUE, id=pompes1$noms) #pour determiner un perimetre autour de chaque pompe (mais je n'ai pas réussi à savoir en mètre)
```
__CREATION D'UN PERIMETRE AUTOUR DE CHAQUE POMPES__
```{r }
map2 <- leaflet(morts) %>%
addTiles() %>%
addCircleMarkers(data=morts, ~long, ~lat,radius= ~sqrt(Count)*5, color = "#a500a5", fillOpacity = 0.01) %>%
......@@ -101,14 +113,17 @@ map2
Puis pour montrer que le nombre de morts étaient plus important autour de la pompe de Broad Street j'ai voulu réaliser un histogramme montrant le nombre de morts dans le périmètre de chaque pompe.
```{r, echo=FALSE}
```{r}
morts1 <- data.frame(long= morts$long,lat=morts$lat)
coordinates(morts1) <- ~long + lat
count <- over(pointsBuffer, morts1) # fonction "over" : pour compter le nbre de morte dans chaque rayon autour de chaque pompe
## je n'ai pas réussi à attrivuer le nom de la pompes avec le vrai nombre de morts..
```
__CREATION DU BARPLOT__
```{r}
barplot(count, ylab = "Nombre de morts", xlab="Numéro de pompes", names.arg=c("P1 BD", "P2", "P3","P4","P5","P6","P7","P8"))
```
Malheureusement, je n'ai pas reussi à attribuer le bon nombre de morts à chaque pompe, mais j'ai quand même essayé...
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment