- 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
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
# [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))
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:
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.
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
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)
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