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>.
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:
# Préparation des données
L'objectif de ce travail est de reproduire des graphes semblables à ceux du [South China Morning Post](https://www.scmp.com/) (SCMP), sur la page [The Coronavirus Pandemic](https://www.scmp.com/topics/coronavirus-pandemic-all-stories) et qui montrent pour différents pays le nombre cumulé (c'est-à-dire le nombre total de cas depuis le début de l'épidémie) de personnes atteintes de la [maladie à coronavirus 2019](https://fr.wikipedia.org/wiki/Maladie_%C3%A0_coronavirus_2019).
Les données que nous utilisons dans un premier temps sont compilées par le [Johns Hopkins University Center for Systems Science and Engineering (JHU CSSE)](https://systems.jhu.edu/) et sont mises à disposition sur [GitHub](https://github.com/CSSEGISandData/COVID-19). C’est plus particulièrement sur les données [time_series_covid19_confirmed_global.csv]{style="background-color:#808080"} (des suites chronologiques au format [csv](https://fr.wikipedia.org/wiki/Comma-separated_values)) disponibles à l’adresse : <https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_time_series/time_series_covid19_confirmed_global.csv>, que nous nous sommes concentrés. Les données concernent les données disponibles au 04/06/2024.
data_file = "C:/Users/cc270930/Desktop/MOOC recherche reproductible/Module 3 - La main à la pâte, une analyse réplicable/evalpairs/time_series_covid19_confirmed_global.csv"
data = read.csv(data_file, sep = ";", header = TRUE)
```
Regardons ce que nous avons obtenu:
```{r}
head(data)
tail(data)
```
# Modification de la table pour la création du graphe
On va créer un graphe montrant l’évolution du nombre de cas cumulé 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*), et les États-Unis (*US*).
Le nom entre parenthèses est le nom du « pays » tel qu’il apparaît dans le fichier [time_series_covid19_confirmed_global.csv]{style="background-color:#808080"}. Les données de la Chine apparaissent par province et nous avons séparé Hong-Kong, non pour prendre parti dans les différences entre cette province et l’état chinois, mais parce que c’est ainsi qu’apparaissent les données sur le site du SCMP. Les données pour la France, la Hollande et le Royaume-Uni excluent les territoires d’outre-mer et autres « résidus coloniaux ».
On va commencer par ne garder dans la table que les données dont nous avons besoin à l'aide de la fonction [subset()]{style="background-color:#808080"} :
Comme on peut le voir, pour la Chine (hors Hong Kong) on a plusieurs lignes (une pour chaque province). On souhaite n'avoir qu'une seule ligne par pays, il faut donc sommer toutes les lignes de la Chine. Pour cela, on va dans un premier temps créer 2 tables : une contenant les données de la Chine et une autre contenant les données de tous les autres pays en ne gardant que les colonnes qui nous intéressent.
```{r}
data_graph1 = subset(data_graph, Country == "China")
data_graph1 = data_graph1[, -c(1:4)]
data_graph1 = data_graph1[, -c(1144)]
data_graph2 = subset(data_graph, Country != "China")
data_graph2 = data_graph2[, -c(1:4)]
data_graph2 = cbind(data_graph2[,c(1144,1:1143)])
```
On ne veut qu'une seule ligne pour la table de la Chine afin d'avoir le nombre cumulé de cas de COVID-19 dans ce pays. Pour cela, on va donc sommer les colonnes entres elles à l'aide de la fonction [colSums()]{style="background-color:#808080"}
Maintenant que nous n'avons plus qu'une seule ligne pour la Chine, on peut fusionner nos 2 tables (Chine et autres pays) pour n'avoir qu'une seule table contenant l'ensemble de nos données. On va pour cela utiliser la fonction [rbind()]{style="background-color:#808080"} qui va permettre de combiner les deux tables dans une seule table. Attention, cette fonction peut être utilisée ici car les deux tables ont exactement les mêmes colonnes. Puis on trie la nouvelle table créée sur la colonne "Country" par ordre alphabétique à l'aide de la fonction [order()]{style="background-color:#808080"}
On va supprimer de l'environnement les tables temporaires créées et les objets non utilisés pour ne pas faire d'erreur d'utilisation des tables. On affiche dans un premier temps la liste des objets avec la fonction [ls()]{style="background-color:#808080"}, puis on supprime les objets avec la fonction [rm()]{style="background-color:#808080"} :
```{r cars}
summary(cars)
```{r}
ls()
rm(data_graph1, data_graph2, data_file, data_url)
```
Et on peut aussi aisément inclure des figures. Par exemple:
```{r pressure, echo=FALSE}
plot(pressure)
Pour pouvoir faire le graphique, nous avons besoin d'une table contenant les valeurs suivantes : Country, Date, Value (= nombre cumulé de cas de Covid-19). On va donc réorganiser la table pour pouvoir avoir seulement ces 3 colonnes.
On va commencer par créer toutes les tables temporaires contenant les données de chacun des pays.
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.
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.
Puis on va reformater les tables pour faire les graphiques plus facilement
TABLE$Date = as.Date(TABLE$DateTemp, format = "%d-%m-%Y")
TABLE = TABLE[, -c(2,4)]
TABLE = cbind(TABLE[,c(1,3,2)])
names(TABLE) = c("Country", "Date", "Value")
TABLE = as.data.frame(TABLE)
}
df_res = lapply(list_dfs, CreatBase)
for(i in c(1:14)) {
nam = paste("Temp", i, sep = "")
assign(nam, df_res[[i]])
}
```
Maintenant que toutes les tables temporaires sont créées sous le bon format, on va les fusionner pour n'avoir qu'une seule table contenant toutes les données de tous les pays concernés
Temp11, Temp12, Temp13,Temp14, df_res, list_dfs, i, nam, CreatBase)
```
# Création du graphe
Maintenant que nous avons une table complète, nous allons créer le graphe avec la date en abscisse et le nombre cumulé de cas par pays à cette date en ordonnée selon une échelle linéaire.