diff --git a/module3/exo3/exercice_fr.Rmd b/module3/exo3/exercice_fr.Rmd index 1fcd8db0d6368e9c8f3d108636cbb934bc956949..1e8e7d64e479d45b5cf4c43e28fa99c285142fad 100644 --- a/module3/exo3/exercice_fr.Rmd +++ b/module3/exo3/exercice_fr.Rmd @@ -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é...