TP1 Introduction R
TP1 Introduction R
Objectifs
Le présent TP a pour objectif de passer en revue certaines structures de données de R et les fonctions
d’importation des données dans votre espace de travail. Nous supposons que vous êtes familier avec la
syntaxe de base de R (déclaration de variable, arithmétique simple ...).
Le TP est divisé en 3 sections. Nous allons d’abord examiner les structures de données telles que les vecteurs
et data.frames. Dans la deuxième section, nous utilisons des fonctions R de base pour importer des données
à partir des fichiers, et nous présenterons par la suite un package assez complet pour importer et manipuler
des données dans R. La dernière section sera consacrée à une étude de cas. Nous utiliserons une base de
données réelles pour faire une analyse de données exploratoire simple avec les notions que nous avons vues.
Nous vous recommandons d’utiliser Rstudio pour suivre ce TP plutôt que l’éditeur de base R.
4 Travail à faire 19
1
Master AEM
is.vector est une fonction prédéfinie en R qui teste si un objet est un vecteur atomique ou pas. Il renvoie
TRUE si l’objet est un vecteur atomique et FALSE sinon. Pour connaı̂tre le type de l’objet (doubles, entier,
caractère,· · ·) on utilise la fonction typeof :
typeof(x)
## [1] "double"
Dans R, les nombres sont de type doubles par défaut. Pour créer un entier on place un L après le nombre :
La distinction entre les entiers et les doubles n’est généralement pas importante. La seule différence entre
1 et 1L est la façon dont R enregistre le numéro dans la mémoire de l’ordinateur. Les nombres entiers sont
définis plus précisément dans la mémoire que les doubles.
À l’aide de la fonction is.vector on peut vérifier que text est bien un vecteur et pour connaitre le type du
vecteur on utilise la fonction typeof :
2
Master AEM
is.vector(text)
## [1] TRUE
typeof(text)
## [1] "character"
Les éléments individuels d’un vecteur de caractères sont appelés string Un vecteur de caractères peut contenir
des lettres, des nombres ou des symboles.
text1 <- c("AEM","+","S3","2020")
text1
## [1] "AEM" "+" "S3" "2020"
Les vecteurs logiques sont très utiles pour faire des c comparaisons. Par exemple considérons un vecteur qui
contient les notes du module de statistique, on veut connaı̂tre les étudiants ayant une note supérieure à 12 :
Les valeurs TRUE indiquent que l’élément du vecteur vérifie la condition demandée (note> 12), et évidemment
la valeur FALSE indique que la condition n’est pas vérifiée.
3
Master AEM
Ici on crée une liste nommée liste1 contenant trois vecteurs : le premier est un vecteur de caractère contenant
les noms de 4 étudiants, le second est un vecteur numérique avec leur note pour le module de statistique et
le dernier est vecteur logique décrivant si l’étudiant est un garçon.
Pour connaı̂tre le type de chaque élément de la liste on utilise la fonctionstr :
str(list1)
## List of 3
## $ : chr [1:4] "Mounir" "Lamiaa" "Abir" "Youness"
## $ : num [1:4] 5 12 10 14
## $ : logi [1:4] TRUE FALSE FALSE TRUE
Nous devons nous assurer que chaque vecteur a la même longueur. Comme vous pouvez le voir dans le code
ci-dessus, nous pouvons nommer les arguments dans data.frame, afin de pouvoir interpréter plus facilement
les données lors de l’affichage :
df
## Nom Note EstMale
## 1 Mounir 5 TRUE
## 2 Lamiaa 12 FALSE
## 3 Abir 10 FALSE
## 4 Youness 14 TRUE
4
Master AEM
La première ligne contient les noms des colonnes et les valeurs d’une colonne à l’autre sont séparées par des
points-virgules. Pour importer ce type de donnée on utilise la fonction read.csv2 :
data <- read.csv2(file="data.csv",header=TRUE)
data
## Annee Production Température Precipitation
## 1 1961 1537830 18.12369 19.65468
## 2 1962 3511979 17.48824 31.46182
## 3 1963 3856071 17.14823 41.40100
## 4 1964 3403305 17.53572 24.57906
## 5 1965 3486365 17.08257 33.40013
## 6 1966 2179840 17.33252 18.83009
## 7 1967 3523200 16.99553 31.86922
## 8 1968 6352730 17.18368 29.44816
## 9 1969 4089600 17.09723 35.58974
## 10 1970 4251560 17.39056 26.58683
## 11 1971 5352461 16.39025 34.38428
## 12 1972 5167140 16.32070 30.69492
## 13 1973 3228970 17.06613 24.38894
## 14 1974 4809380 16.95625 23.26605
5
Master AEM
Cette fonction prend deux arguments le premier est le nom du fichier avec l’extension entre deux guille-
mets(”data.csv”). Le deuxième argument est une valeur logique TRUE si la première ligne contient les noms
des colonnes et FALSE sinon.
Si vous rencontrez une erreur comme l’exemple ci-dessous. Il se peut que le fichier que vous essayez d’importer
ne soit pas dans le même répertoire que le projet R. Pour le corriger vous devez mettre le fichier dans le bon
répertoire et appeler de nouveau la fonction read.csv2.
## Warning in file(file, "rt"): impossible d’ouvrir le fichier ’donner.csv’ : No such file
or directory
## Error in file(file, "rt"): impossible d’ouvrir la connexion
Après avoir terminé l’installation, l’étape suivante consiste à appeler le package pour qu’on puisse utiliser
ces fonctions :
library(readxl)
Désormais on peut utiliser la fonction readexcel et on importe les données comme suit :
data<- read_excel("data.xlsx")
data
## # A tibble: 20 x 4
## Année Production Température Précipitation
## <dbl> <dbl> <dbl> <dbl>
## 1 1961 1537830 18.1 19.7
## 2 1962 3511979 17.5 31.5
## 3 1963 3856071 17.1 41.4
## 4 1964 3403305 17.5 24.6
## 5 1965 3486365 17.1 33.4
## 6 1966 2179840 17.3 18.8
## 7 1967 3523200 17.0 31.9
## 8 1968 6352730 17.2 29.4
## 9 1969 4089600 17.1 35.6
## 10 1970 4251560 17.4 26.6
## 11 1971 5352461 16.4 34.4
## 12 1972 5167140 16.3 30.7
6
Master AEM
On peut par la suite charger le package dans l’environnement de travail. Sur la console on peut voir un
aperçu des packages inclus dans tidyverse. ggplot2 gère la visualisation des données, dplyr s’occupe de
toutes les manipulations et transformation des données, tibble est la structure de données de base pour les
objets de ce package :
library(tidyverse)
7
Master AEM
read csv2 importe les données du fichier sous la forme d’un tibble. Une information supplémentaire qu’on
peut voir dans la sortie, sous le nom de chaque colonne la fonction indique la nature des données de cette
colonne. <dbl> ⇐⇒ double, les données sont de nature numérique .
Si on veut avoir une idée globale de la structure des données avec lesquelles on travaille, on appelle la fonction
glimpse :
glimpse(data)
## Rows: 20
## Columns: 4
## $ Annee <dbl> 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 19...
## $ Production <dbl> 1537830, 3511979, 3856071, 3403305, 3486365, 21798...
## $ `Temp\xe9rature` <dbl> 18.12369, 17.48824, 17.14823, 17.53572, 17.08257, ...
## $ Precipitation <dbl> 19.65468, 31.46182, 41.40100, 24.57906, 33.40013, ...
On a comme sortie le nombre de lignes, de colonnes, les noms des colonnes, le type des données pour chaque
colonne et les premiers éléments de chaque colonne.
Ensuite on charge les données dans l’environnement de travail avec la fonction data,qui permet de charger
des bases de données à partir de packages :
library(coronavirus)
data("coronavirus")
Les données étant présentes dans l’environnement de travail, on s’intéresse à connaı̂tre les noms de va-
riables de la base de données. On appelle la fonction names qui retourne les noms des colonnes de l’objet
demandé :
8
Master AEM
Comme on peut le voir sur la sortie la base de données coronavirus contiennent 7 variables. date donne la
date de l’observation, on sait que les données sont journalières. province et country indiquent respective-
ment la province et le pays auquel appartient l’observation. lat et long sont latitude et longitude du pays.
type est une variable qui contient deux modalités : si l’observation correspond à un cas d’infection confirmée
elle est représentée par confirmed et si l’observation correspond à un cas de décès elle est représentée par
Death. Finalement la variable cases représentant le nombre de cas confirmés ou de décès.
Jetons un coup d’oeil sur la structure global des données :
str(coronavirus)
## 'data.frame': 150720 obs. of 7 variables:
## $ date : Date, format: "2020-01-22" "2020-01-23" ...
## $ province: chr "" "" "" "" ...
## $ country : chr "Afghanistan" "Afghanistan" "Afghanistan" "Afghanistan" ...
## $ lat : num 33.9 33.9 33.9 33.9 33.9 ...
## $ long : num 67.7 67.7 67.7 67.7 67.7 ...
## $ type : chr "confirmed" "confirmed" "confirmed" "confirmed" ...
## $ cases : int 0 0 0 0 0 0 0 0 0 0 ...
La base de données est du type data.frame avec 150720 observations et 7 variables. Le reste de la sortie donne
la nature des différentes colonnes : date est du type Date, une structure de données de R qui permet de stocker
les dates sous la forme Anne-mois-jour. province, coutry et type sont des vecteurs de caractères.lat et
long sont des vecteurs numériques et cases est un vecteur d’entiers.
Les variables province, lat et long n’ont pas beaucoup d’intérêt pour notre analyse, il convient de les
éliminer. Pour supprimer des colonnes d’une data.frame, on appelle la data.frame suivi de deux crochets.À
l’intérieur de ces derniers un signe moins et un vecteur numérique avec la position des colonnes qu’on souhaite
supprimer, comme suit :
data <- coronavirus[-c(2,4,5)]
On peut lire le code ci-dessus de la manière suivante ”je veux la data.frame coronavirus moins les colonnes
2, 4 et 5. Le résultat de cette sélection est stocké dans une variable qu’on nomme data. Si on regarde la
structure de cette nouvelle data.frame, les variables province, lat et long ont été bien éliminées :
str(data)
## 'data.frame': 150720 obs. of 4 variables:
## $ date : Date, format: "2020-01-22" "2020-01-23" ...
## $ country: chr "Afghanistan" "Afghanistan" "Afghanistan" "Afghanistan" ...
## $ type : chr "confirmed" "confirmed" "confirmed" "confirmed" ...
## $ cases : int 0 0 0 0 0 0 0 0 0 0 ...
On s’intéresse à savoir le lapse de temps que parcourent les données. Pour cela on analysera la variable date
qui contient les dates des observations. Pour sélectionner une colonne d’une data.frame on utilise l’opérateur
$ suivit du nom de la colonne souhaité comme suit :
data$date
En appliquant les fonctions min et max à la colonne date, on peut avoir la date de début qui correspond à
la valeur minimale et celle de fin qui correspond à la valeur maximale.
min(data$date)
9
Master AEM
## [1] "2020-01-22"
max(data$date)
## [1] "2020-07-31"
Donc les observations de la base de données coronavirus commencent du 22 janvier 2020 (2020-01-22) au
31 juillet 2020 (2020-07-31).
On veut savoir quels sont les pays présents dans cette base. Or comme les données ont une fréquence
journalière on doit s’attendre que les noms des pays ne soient répétés autant que fois qu’il y a d’observation.
Pour cela on utilisera la fonction R unique qui permet de retourner les éléments uniques dans un vecteur.
Ainsi on sélectionne la colonne country avec l’opérateur $ et on met cette colonne à l’intérieur de la fonction
unique :
unique(data$country)
Pour connaitre la longueur de ce vecteur de nom de pays, on utilise la fonction length qui retourne la
longueur d’un vecteur :
length(unique(data$country))
## [1] 188
Donc la base de données coronavirus contient les données pour 188 pays sur une période allant du 22
janvier 2020 au 31 juillet 2020 .
Dans la suite on veut étudier uniquement les données du Maroc. Pour cela on doit sélectionner uniquement les
observations correspondant au Maroc, c’est-à-dire maintenir que les lignes de data ou la valeur de country
est égale à Morocco. Ceci peut être fait avec la fonction subet, le premier argument de la fonction est la
data.frame sur laquelle on veut travailler. Le second argument est la condition qu’on veut appliquer à la
data.frame :
subset(data,country=="Morocco")
On stocke ce résultat dans une nouvelle data.frame qu’on nomme cas Maroc :
cas_Maroc <- subset(data,country=="Morocco")
Par la suite on souhaite faire une analyse sur les cas d’infection confirmé au Maroc, donc un deuxième filtrage
de la data.frame est nécessaire. La condition qu’on appliquera dans cette situation sera au niveau de la
colonne type. On veut conserver que les lignes ou la valeur de type est égale à confirmed :
subset(cas_Maroc, type=="confirmed")
On stocke ce nouveau résultat dans une nouvelle data.frame qu’on nomme cas Maroc inf :
cas_Maroc_inf <- subset(cas_Maroc, type=="confirmed")
str(cas_Maroc_inf)
## 'data.frame': 192 obs. of 4 variables:
## $ date : Date, format: "2020-01-22" "2020-01-23" ...
## $ country: chr "Morocco" "Morocco" "Morocco" "Morocco" ...
## $ type : chr "confirmed" "confirmed" "confirmed" "confirmed" ...
## $ cases : int 0 0 0 0 0 0 0 0 0 0 ...
Comme on peut le voir cette nouvelle data.frame contient 192 observations. Traçons une représentation
graphique des cas d’infection au maroc à l’aide de la fonction plot. Cette fonction prend comme arguments
l’axe des x, ici ça serait la colonne des dates. L’axe des y, on utilisera ici la colonne cases. Les arguments
xlab et ylab permettent de donner des noms aux axes. Le dernier argument est type du graphique souhaité,
10
Master AEM
la valeur l indique qu’on veut des lignes (un argument facultatif est col pour la couleur ) :
plot(x=cas_Maroc_inf$date,
y=cas_Maroc_inf$cases,
type = "l",
xlab="Temps",
ylab="Cas confirmé",
col="red")
1000
800
Cas confirmé
600
400
200
0
Temps
Une autre question qu’on peut se poser : comment a varié le nombre de cas confirmé au Maroc de mois en
mois. Tout d’abord on créera des variables pour stocker les données pour chaque mois, on utilisera encore
une fois la fonction subset :
cas_Maroc_Janvier <- subset(cas_Maroc_inf,
date>=as.Date("2020-01-01") & date<=as.Date("2020-01-31"))
cas_Maroc_Fevrier <- subset(cas_Maroc_inf,
date>=as.Date("2020-02-01") & date<=as.Date("2020-02-29"))
cas_Maroc_Mars <- subset(cas_Maroc_inf,
date>=as.Date("2020-03-01") & date<=as.Date("2020-03-31"))
cas_Maroc_Avril <- subset(cas_Maroc_inf,
date>=as.Date("2020-04-01") & date<=as.Date("2020-04-30"))
cas_Maroc_Mai<- subset(cas_Maroc_inf,
date>=as.Date("2020-05-01") & date<=as.Date("2020-05-31"))
cas_Maroc_Juin <- subset(cas_Maroc_inf,
date>=as.Date("2020-06-01") & date<=as.Date("2020-06-30"))
cas_Maroc_Juillet<- subset(cas_Maroc_inf,
date>=as.Date("2020-06-01") & date<=as.Date("2020-07-31"))
11
Master AEM
Ce qui change dans la fonction subset est la condition. On peut lire la condition dans la fonction subset de
la première ligne comme suit dans la data.frame sélectionne les lignes ou la valeur de date est supérieure
ou égale au 1er janvier 2020 ET est inférieur ou égale au 31 janvier 2020. La fonction as.Date permet
d’indiquer à R que la valeur entre parenthèses doit être traitée comme une date. On fait de même pour
chaque mois.
On s’intéresse au nombre de cas total par mois, ainsi on doit calculer la somme de la colonne cases pour
chaque mois. On réalise ceci avec la fonction sum, par exemple pour le mois de janvier on a 0 cas :
sum(cas_Maroc_Janvier$cases)
## [1] 0
On fait appel à la fonction cbind qui permet de combiner des vecteurs, des matrices ou data.frame par
colonnes. On créera ainsi un vecteur contenant les cas confirmés au Maroc par mois. Pour plus de lisibilité
on donne un nom pour chaque colonne :
cas_mois <- cbind(Janvier=sum(cas_Maroc_Janvier$cases),
Fevrier=sum(cas_Maroc_Fevrier$cases),
Mars=sum(cas_Maroc_Mars$cases),
Avril=sum(cas_Maroc_Avril$cases),
Mai=sum(cas_Maroc_Mai$cases),
Juin= sum(cas_Maroc_Juin$cases),
Juillet=sum(cas_Maroc_Juillet$cases))
cas_mois
## Janvier Fevrier Mars Avril Mai Juin Juillet
## [1,] 0 0 617 3806 3384 4726 16515
Un diagramme en bâton permettra d’analyser graphique l’évolution des infections au Maroc d’un mois
à l’autre. La fonction cbind permet de générer un diagramme en bâton, elle prend comme argument un
vecteur des valeurs qu’on souhaite représenter. Les arguments main col sont facultatifs, ils permettent
respectivement de donner un titre et une couleur au graphique :
barplot(cas_mois,
main="Cas par mois",
col="darkblue")
12
Master AEM
La fonction glimpse fonctionne comme la fonction de base de R str, elle donne une description globale des
données et des variables :
glimpse(coronavirus)
## Rows: 150,720
## Columns: 7
## $ date <date> 2020-01-22, 2020-01-23, 2020-01-24, 2020-01-25, 2020-01-2...
## $ province <chr> "", "", "", "", "", "", "", "", "", "", "", "", "", "", ""...
## $ country <chr> "Afghanistan", "Afghanistan", "Afghanistan", "Afghanistan"...
## $ lat <dbl> 33.93911, 33.93911, 33.93911, 33.93911, 33.93911, 33.93911...
## $ long <dbl> 67.70995, 67.70995, 67.70995, 67.70995, 67.70995, 67.70995...
## $ type <chr> "confirmed", "confirmed", "confirmed", "confirmed", "confi...
13
Master AEM
On élimine les trois colonnes qui ne nous intéressent pas province, lat et long. On stocke le résultat dans
la variable data :
data <- coronavirus%>%
select(-c(province,long, lat))
%>% est l’opérateur pipe du package, il prend le résultat de ce qui le précède et l’injecte dans la fonction
qui suit. Par exemple si on veut calculer le sinus de π en R on exécute le code suivant sin(pi). En uti-
lisant l’opérateur pipe on a une expression équivalente pi%>%sin(). Le code R contient souvent beaucoup
de parenthèses. Lorsque vous avez un code complexe, cela signifie souvent que vous devrez imbriquer ces
parenthèses ensemble. Cela rend votre code R difficile à lire et à comprendre. Ainsi cet opérateur résout cette
difficulté.
Le code précédent peut se lire comme suit dans coronavirus sélectionne toutes les colonnes sauf
province, lat et long. Le signe - indique l’élimination, s’il n’était pas présent on ne conservera que ces
trois colonnes et on éliminerait le reste. La fonction select permet, comme l’indique son nom de sélectionner
des variables/colonnes dans une base de données.
On peut convertir la data.frame en un tibble, une structure de données de tidyverse. Convertir des
données d’un type à un autre (int vers char, data.frame vers matrix,· · ·) est le principe de coercion en
R. Pour notre cas on appelle la fonction as tibble() pour réaliser cette conversion :
data <- as_tibble(data)
data
## # A tibble: 150,720 x 4
## date country type cases
## <date> <chr> <chr> <int>
## 1 2020-01-22 Afghanistan confirmed 0
## 2 2020-01-23 Afghanistan confirmed 0
## 3 2020-01-24 Afghanistan confirmed 0
## 4 2020-01-25 Afghanistan confirmed 0
## 5 2020-01-26 Afghanistan confirmed 0
## 6 2020-01-27 Afghanistan confirmed 0
## 7 2020-01-28 Afghanistan confirmed 0
## 8 2020-01-29 Afghanistan confirmed 0
## 9 2020-01-30 Afghanistan confirmed 0
## 10 2020-01-31 Afghanistan confirmed 0
## # ... with 150,710 more rows
On a plus un data.frame mais un tibble. Pour déterminer la date de début et de fin de la base on appliquera
la fonction summarise, qui permet de résumer l’information dans la base de données d’une manière efficace
et selon notre besoin. On appliquera la fonction sur data pour déterminer le min et le max de la colonne
date :
data%>%summarise(date_debut = min(date), date_fin = max(date))
## # A tibble: 1 x 2
## date_debut date_fin
## <date> <date>
## 1 2020-01-22 2020-07-31
Pour connaitre le nombre de pays dans la base de données on utilise la fonction group by. Cette fonction
permet de créer des groupes une base de données selon la valeur d’une ou plusieurs colonnes, ici on veut
grouper selon les noms des pays présents dans la colonne country. Après avoir groupé les différents pays on
appelle la fonction count qui permet de compter le nombre de répétition de chaque groupe.
14
Master AEM
data%>%group_by(country)%>%count()
## # A tibble: 188 x 2
## # Groups: country [188]
## country n
## <chr> <int>
## 1 Afghanistan 576
## 2 Albania 576
## 3 Algeria 576
## 4 Andorra 576
## 5 Angola 576
## 6 Antigua and Barbuda 576
## 7 Argentina 576
## 8 Armenia 576
## 9 Australia 4608
## 10 Austria 576
## # ... with 178 more rows
Les observations pour l’Australie ont été collectées par province, qui sont au nombre de 8 (8×576 = 4608), ce
qui explique le nombre d’observation élevé par rapport aux premiers pays de la table. Pour filtrer uniquement
les cas d’infection confirmé au Maroc, on utilise la fonction filter à laquelle on donne les conditions à
appliquer :
data_Maroc <- data%>%
filter(country=="Morocco" & type=="confirmed")
data_Maroc
## # A tibble: 192 x 4
## date country type cases
## <date> <chr> <chr> <int>
## 1 2020-01-22 Morocco confirmed 0
## 2 2020-01-23 Morocco confirmed 0
## 3 2020-01-24 Morocco confirmed 0
## 4 2020-01-25 Morocco confirmed 0
## 5 2020-01-26 Morocco confirmed 0
## 6 2020-01-27 Morocco confirmed 0
## 7 2020-01-28 Morocco confirmed 0
## 8 2020-01-29 Morocco confirmed 0
## 9 2020-01-30 Morocco confirmed 0
## 10 2020-01-31 Morocco confirmed 0
## # ... with 182 more rows
Pour tracer une représentation graphique de ces données on utilise le package ggplot2 inclus dans tidyverse.
La fonction ggplot prend en premier argument les données sur lesquelles on travaille. Ensuite aes permet
de spécifier les valeurs des axes et finalement à l’aide du signe + on ajoute geom line pour tracer une ligne
(col permet de spécifier la couleur ) :
ggplot(data=data_Maroc, aes(x=date,y=cases))+
geom_line(color="red")
La puissance de tidyverse est dans sa capacité de regrouper un appel de fonctions assez complexe d’une
manière lisible et cohérente. Ainsi en partant de data on peut regrouper les codes précédents comme suit :
data%>%
filter(country=="Morocco" & type=="confirmed")%>%
ggplot( aes(x=date,y=cases))+
15
Master AEM
geom_line(color="red")
900
600
cases
300
avr. juil.
date
Si on veut visualiser les cas d’infections confirmés dans un autre pays, par exemple la Mauritanie, on doit
juste changer la valeur sur laquelle on filtre les pays :
data%>%
filter(country=="Mauritania" & type=="confirmed")%>%
ggplot( aes(x=date,y=cases))+
geom_line(color="green")
16
Master AEM
200
150
cases
100
50
avr. juil.
date
Pour grouper les cas confirmés au Maroc on utilisera les deux fonctions group by et summarise. La fonction
format permet d’extraire le mois dans chaque date, qui est de la forme "%y-%m-%d". On appelle la fonction
group by pour grouper sur les mois qu’on a extrait et finalement avec la fonction summerise on calcule la
somme des cas confirmés pour chaque mois :
data_Maroc_mois <- data_Maroc%>%
group_by(Mois = format(date, "%m"))%>%
summarise(Total = sum(cases))
data_Maroc_mois
## # A tibble: 7 x 2
## Mois Total
## * <chr> <int>
## 1 01 0
## 2 02 0
## 3 03 617
## 4 04 3806
## 5 05 3384
## 6 06 4726
## 7 07 11789
On stocke le résultat dans la variable data Maroc mois et on donne un diagramme en bâton pour ces
données mensuelles. On ajoute la fonction geom bar pour préciser qu’on veut le diagramme en bâton de
ggplot2. L’argument fill permet d’indiquer qu’on veut une couleur pour chaque mois. L’argument stat
= "identity" indique que la hauteur de chaque bar soit égale au nombre de cas de chaque ligne :
ggplot(data = data_Maroc_mois,aes(x=Mois,y=Total,fill=Mois))+
geom_bar(stat = "identity")
De même on peut aussi avoir cette représentation en bâton en partant de data avec une seule ligne de
code :
17
Master AEM
data%>%
filter(country=="Morocco" & type=="confirmed")%>%
group_by(Mois = format(date, "%m"))%>%
summarise(Total = sum(cases))%>%
ggplot(aes(x=Mois,y=Total,fill=Mois))+
geom_bar(stat = "identity")
12000
9000
Mois
01
02
03
Total
6000
04
05
06
07
3000
01 02 03 04 05 06 07
Mois
18
Master AEM
4 Travail à faire
Vous pouvez traiter les questions suivantes avec les notions vues dans ce TP ou toutes autres méthodes sur
R.
1. Dans la base de données coronavirus, donner les cas d’infections confirmés pour tous les pays durant les
mois de janvier, février et mars.
2. Donner une représentation graphique de cette évolution de cas d’infections confirmés pour les dix premiers
pays de la liste.
3. Dans la base de données coronavirus, donner les cas de décès totaux pour tous les pays.
4. Donner une représentation graphique de cette évolution pour les dix premiers pays de la liste.
5. Filtrer la base de données coronavirus pour conserver les pays suivants : Chine, Etats-unis, Mexique,
Russie, Maroc, Tunisie, Cameroun et l’Egypte.
(a) Conservez-les données de chaque pays dans une variable (le nom du pays par exemple).
(b) Pour chaque pays conservez que les données de cas d’infection confirmés, sur la période allant de mars
jusqu’au mois de juillet.
(c) Pour chaque pays tracer une représentation graphique pour montrer l’évolution des cas d’infection
confirmés.
(d) Intrepréter les résultats pour chaque pays. Existent-ils des baisses dans le nombre d’infections ? Pour
quelle pays ? Quel sont les raisons de ces baisses ?
19