You need to sign in or sign up before continuing.

Update exercice_fr.Rmd

parent a4d5b134
---
title: "Votre titre"
author: "Votre nom"
date: "La date du jour"
output: html_document
title: "Devoir évalué par les pairs"
author: "Tiffany"
date: "25/02/2021"
output:
pdf_document :
keep_tex: yes
fig_caption: yes
highlight: tango
geometry : margin=1in
fontsize : 11pt
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```
## Quelques explications
library(parsedate) version 1.2.0
library(dplyr) version 1.0.4
library(tidyverse) version 1.3.0
## Quel est l'objet de l'étude ?
Autour de la SARS-CoV-2
Présentation des données
+----------------+----------------+--------+--------+---------+---------+--------+
| Province.State | Country.Region | Lat | Long | X1.1.20 | X1.2.20 | etc |
+----------------+----------------+--------+--------+---------+---------+--------+
| | | | | | | |
+----------------+----------------+--------+--------+---------+---------+--------+
Variables :
- Province.State : provinces des différents pays (DOM/TOM par exemple pour la France)
- Country.Region : pays dans lesquels ont été effectuées les mesures
- Lat : latitude du lieu en question
- Long : longitude du lieu en question
- Colonnes X1.1.20 (etc.) : dates (01/01/2020 ici soit Xmois.jour.année)
Pour chaque date, nous avons le nombre de cas de covid-19 par pays.
But de l'étude : voir le nombre de cas covid au cours du temps pour les pays suivants : la Belgique (Belgium), la Chine - toutes les provinces sauf Hong-Kong (China), Hong Kong (China, Hong-Kong), la France métropolitaine (France), l'Allemagne (Germany), l'Iran (Iran), l'Italie (Italy), le Japon (Japan), la Corée du Sud (Korea, South), la Hollande sans les colonies (Netherlands), le Portugal (Portugal), l'Espagne (Spain), le Royaume-Unis sans les colonies (United Kingdom), les États-Unis (US).
\newpage
## Obtenir les données
### Lien de téléchargement des données sur la Covid-19
```{r}
data_url = "https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/
csse_covid_19_data/csse_covid_19_time_series/time_series_covid19_confirmed_global.csv"
```
### Copie locale des données sur la Covid-19
```{r}
data_file = "cas_covid.csv"
if (!file.exists(data_file)){
download.file(data_url, data_file, method = "auto")
}
```
### Chargement du fichier .csv covid-19 :
```{r}
data_i = read.csv("cas_covid.csv", na.strings = "")
```
\newpage
## Inspection des données
Regardons ce que nous avons obtenu:
```{r, results='hide'}
head(data_i)
tail(data_i)
```
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 <http://rmarkdown.rstudio.com>.
Y a-t-il des points manquants dans nos données ?
```{r, results='hide'}
na_records = apply(data_i, 1, function (x) any(is.na(x)))
data_i[na_records,]
```
Quand on regarde les données, on peut voir que quand la province n'est pas spécifiée, R ne prend pas en compte la valeur manquante comme NA. Lors du chargement du fichier, nous spécifions donc à R que les valeurs "" sont en fait des NA par l'option `na.string = ""`.
R nous a également indiqué le manque de valeurs pour les variables **lat** et **long** à la ligne [53]. Ce manque de valeur n'est pas important pour le reste de l'étude. Nous pouvons donc garder cette ligne.
On vérifie la classe de nos différentes variables :
```{r, results='hide'}
str(data_i)
```
On classe les données par pays :
```{r}
data_i = data_i[order(data_i$Country.Region),]
```
On vérifie :
```{r, results='hide'}
head(data_i)
```
\newpage
## Traitement des données
Pour l'étude, tous les pays vont être traités sans leurs colonies. On veut tout de même avoir les valeurs pour Hong Kong. Pour facilité le code, nous allons remplacer le pays (chine) à la ligne de Hong Kong par Hong Kong.
Il faut tout d'abord trouver la ligne ou les lignes correspondant à Hong Kong
```{r}
colonne <- c(1,2)
subset(data_i, Province.State == "Hong Kong")[colonne]
# [colonne] pour afficher les colonnes qui nous intéresse.
```
Il s'agit de la ligne [71].
On remplace alors "Chine" par "Hong Kong" dans la variable pays (colonne 2) et on vérifie.
```{r}
data <- data_i
data[71,2] = "Hong Kong"
data[71,][colonne]
```
On veut traiter la France, le Royaume unis et la Hollande sans leurs colonies. Pour cela, nous recherchons dans le tableau les lignes qui nous intéressent et on crée de petit tableau par pays.
France sans colonies :
```{r}
France <- subset(data, Country.Region == "France" & is.na(Province.State))
```
Royaume Unis sans colonies :
```{r}
RU <- subset(data, Country.Region == "United Kingdom" & is.na(Province.State))
```
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:
Hollande sans colonies :
```{r cars}
summary(cars)
```{r}
Netherlands <- subset(data, Country.Region == "Netherlands" & is.na(Province.State))
```
Et on peut aussi aisément inclure des figures. Par exemple:
Autres pays :
```{r pressure, echo=FALSE}
plot(pressure)
```{r}
Belgium <- subset(data, Country.Region == "Belgium")
China <- subset(data, Country.Region == "China")
Hong_Kong <- subset(data, Country.Region == "Hong Kong")
Germany <-subset(data, Country.Region == "Germany")
Iran <- subset(data, Country.Region == "Iran")
Italy <- subset(data, Country.Region == "Italy")
Japan <-subset(data, Country.Region == "Japan")
KS <- subset(data, Country.Region == "Korea, South")
Portugal <-subset(data, Country.Region == "Portugal")
Spain <- subset(data, Country.Region == "Spain")
US <- subset(data, Country.Region == "US")
```
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.
On construit un nouveau tableau avec la totalité des pays qui nous intéressent :
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.
```{r, results='hide'}
pays_test <- rbind(Belgium, China, Hong_Kong, France, Germany, Iran, Italy, Japan, KS,
Netherlands, Portugal, Spain, RU, US)
head(pays_test)
```
Certaines de nos colonnes sont inutiles maintenant : Province.State, lat et long. On les enlève (ça pollue):
```{r, results='hide', message=F, warning=F}
library(dplyr)
variable_rm <- c("Province.State", "Lat", "Long")
pays_test <- pays_test %>% select(-variable_rm)
head(pays_test)
```
On regroupe les données de cas par pays :
```{r, message=F, warning=F}
library(dplyr)
cas_pays <- pays_test %>% group_by(Country.Region) %>% summarise_if(is.numeric, sum)
```
On vérifie que nous avons bien les 14 pays demandés :
```{r}
nrow(cas_pays)
```
\newpage
## Réarranger le tableau
Il existe trois règles pour avoir des données bien rangées qui peuvent être traitées :
- chaque ligne doit correspondre à une observation
- chaque colonne doit correspondre à une variable
- chaque valeur est présente dans une unique case de la table
Le troisième point a été traité avec la fonction `group_by` de la librairy *dplyr* mais pour les deux premiers points, on peut dire que notre tableau est totalement à l'envers !
Let's go faire du tidyverse ! Voici le lien pour les curieux : [lien](https://juba.github.io/tidyverse/index.html)
ça date un peu mais c'est plutôt bien expliqué !
```{r, message=F, warning=F}
library(tidyverse)
test <- cas_pays %>% pivot_longer(-Country.Region)
colnames(test)<- c("Country.Region", "Date", "Cas") #on rename les colonnes
head(test)
```
\newpage
## Format des dates
Pour modifier la date, on utilise la fonction `as.Date` et on spécifie le format de la date dans nos données. Comme l'année est indiqué 0020 (pour 2020 par exemple), on change le premier caractère par un 2 pour donner 2020. La fonction `substring()` ne reconnait que la classe *character*. On modifie donc la classe puis on la rechange en *date*.
```{r}
# on spécifie à la fonction as.date() le format de la date
test$date_modif = as.Date(test$Date, format="X%m.%d.%Y")
test$date_modif <- as.character(test$date_modif)
substring(test$date_modif, 1) <- "2"
test$date_modif <- as.Date(test$date_modif)
```
On vérifie si les dates sont correctes en appelant le tableau :
```{r}
head(test)
tail(test)
class(test$date_modif)
```
Vérification visuelle :
```{r, fig.height=5}
plot(test$Cas~test$date_modif, col = "mistyrose", xlab="Date", ylab="")
```
En fonction de l'echelle on peut voir si ça a fonctionné.
\newpage
## Représentations graphiques
### Nombre de cas par jour pour chaque pays (échelle linéaire)
```{r, fig.align='left'}
library(ggplot2)
ggplot(test,aes(x=date_modif, y=Cas, color = Country.Region))+
geom_line() +
labs(x = "", y = "Nombre de cas")+
facet_wrap(~Country.Region) +
theme_bw()+
theme(axis.text.x = element_text(size =10, angle = 90),
legend.position = "none",
strip.background = element_rect(color = "black", fill = "white", linetype = "solid"))
```
\newpage
On peut même faire un histogramme colorisé en fonction des pays pour pouvoir visualiser ce que représente les proportions du nombre de cas aux différentes dates :
```{r, fig.align='left'}
library(ggplot2)
ggplot(test, aes(x=date_modif, y=Cas, fill=Country.Region), position = "fill")+
labs(fill = "Pays sélectionnés")+
geom_bar(stat = "identity") +
labs(x = "", y = "Nombre de cas")+
theme_bw()
```
\newpage
### Nombre de cas par jour pour chaque pays (échelle logarithmique)
```{r, message=F, warning=F,fig.align='left'}
library(ggplot2)
ggplot(test,aes(x=date_modif, y=Cas, color=Country.Region))+
geom_line() +
scale_y_continuous(trans = "log10")+
labs(x = "", y = "Nombre de cas (log10)")+
facet_wrap(~Country.Region) +
theme_bw()+
theme(axis.text.x = element_text(size =10, angle = 90),
legend.position = "none",
strip.background = element_rect(color = "black", fill = "white", linetype = "solid"))
```
\newpage
### Mondialement, ça donne quoi ?
On crée un nouveau tableau à partir du tableau initiale *data_i* et on garde seulement les colonnes qui nous intéressent :
```{r, results='hide'}
library(dplyr)
variable_rm <- c("Province.State", "Lat", "Long")
data_mondiale <- data_i %>% select(-variable_rm)
head(data_mondiale)
```
On réarrange le tableau pour avoir une valeur par ligne plutôt que par colonne :
```{r, results='hide'}
library(tidyverse)
data_mondiale <- data_mondiale %>% pivot_longer(-Country.Region)
colnames(data_mondiale)<- c( "Country.Region", "Date", "Cas") #on rename les colonnes
head(data_mondiale)
```
On modifie le format des dates tout en gardant la colonne initiale pour vérifier :
Pour modifier la date, on utilise la fonction `as.Date` et on spécifie le format de la date dans nos données. Comme l'année est indiqué 0020 (pour 2020 par exemple), on change le premier caractère par un 2 pour donner 2020. La fonction `substring()` ne reconnait que la classe *character*. On modifie donc la classe puis on la rechange en *date*.
```{r, results='hide'}
# on spécifie à la fonction as.date() le format de la date
data_mondiale$date_modif = as.Date(data_mondiale$Date, format="X%m.%d.%Y")
data_mondiale$date_modif <- as.character(data_mondiale$date_modif)
substring(data_mondiale$date_modif, 1) <- "2"
data_mondiale$date_modif <- as.Date(data_mondiale$date_modif)
```
Finalement, on fait un graphique coloré en fonction du pays! On a trop de pays, on peut rien en tirer mais c'est joli !
```{r,fig.align='left'}
library(ggplot2)
ggplot(data_mondiale, aes(x=date_modif, y=Cas, fill=Country.Region), position = "fill")+
geom_bar(stat = "identity") +
labs(x = "", y = "Nombre mondial de cas")+
theme_bw()+
theme(legend.position = 'none')
```
Maintenant, à vous de jouer! Vous pouvez effacer toutes ces informations et les remplacer par votre document computationnel.
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