diff --git a/module3/exo3/exercice_fr.Rmd b/module3/exo3/exercice_fr.Rmd index 7eece5e296bb586e88166aa8a263ca75b44c2b9e..c74d7d8da685f18d7c1002cd1d8a5dd01ffb65ac 100644 --- a/module3/exo3/exercice_fr.Rmd +++ b/module3/exo3/exercice_fr.Rmd @@ -1,33 +1,97 @@ --- -title: "Votre titre" -author: "Votre nom" -date: "La date du jour" -output: html_document +title: "John Snow’s Cholera data" +author: "Emilie Rojas" +date: "4/16/2020" +output: + html_document: default + pdf_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} +data_url = "http://rtwilson.com/downloads/SnowGIS_SHP.zip" +data_SHP = "SnowGIS_SHP.zip" +if (!file.exists(data_SHP)) { + 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 + +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 + +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 setup, include=FALSE} -knitr::opts_chunk$set(echo = TRUE) +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 ``` -## Quelques explications -Ceci est un document R markdown que vous pouvez aisément exporter au format HTML, PDF, et MS Word. Pour plus de détails sur R Markdown consultez . +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. -Lorsque vous cliquerez sur le bouton **Knit** ce document sera compilé afin de ré-exécuter le code R et d'inclure les résultats dans un document final. Comme nous vous l'avons montré dans la vidéo, on inclue du code R de la façon suivante: -```{r cars} -summary(cars) + +```{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) + +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 + addMarkers(data=pompes) #pour rajouter l'emplacement des pompes +map ``` +Cliquer sur les symboles représentant les pompes pour ovir leur noms sur la carte. + -Et on peut aussi aisément inclure des figures. Par exemple: +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. + +```{r, echo=FALSE} + +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) + + +map2 <- leaflet(morts) %>% + addTiles() %>% + addCircleMarkers(data=morts, ~long, ~lat,radius= ~sqrt(Count)*5, color = "#a500a5", fillOpacity = 0.01) %>% + addMarkers(data=pompes, popup = ~Id) %>% + addPolygons(data=pointsBuffer) #pour rajouter autour de chaque pompes un périmètre de XX mètres pour compter le nbre de morts dans ce perimetre +map2 + +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.. + +barplot(count, ylab = "Nombre de morts", xlab="Numéro de pompes", names.arg=c("P1 BD", "P2", "P3","P4","P5","P6","P7","P8")) -```{r pressure, echo=FALSE} -plot(pressure) ``` -Vous remarquerez le paramètre `echo = FALSE` qui indique que le code ne doit pas apparaître dans la version finale du document. Nous vous recommandons dans le cadre de ce MOOC de ne pas utiliser ce paramètre car l'objectif est que vos analyses de données soient parfaitement transparentes pour être reproductibles. +Malheureusement, je n'ai pas reussi à attribuer le bon nombre de morts à chaque pompes, mais j'ai quand même essayé... + + -Comme les résultats ne sont pas stockés dans les fichiers Rmd, pour faciliter la relecture de vos analyses par d'autres personnes, vous aurez donc intérêt à générer un HTML ou un PDF et à le commiter. -Maintenant, à vous de jouer! Vous pouvez effacer toutes ces informations et les remplacer par votre document computationnel.