From 106c6fce636b6117947a3963d28e9ada8029cfc0 Mon Sep 17 00:00:00 2001 From: bergaent Date: Sun, 25 Feb 2024 18:00:30 +0100 Subject: [PATCH] update --- module3/exoR/pouvoir d'achat.Rmd | 72 ++++++++++++++++---------------- 1 file changed, 37 insertions(+), 35 deletions(-) diff --git a/module3/exoR/pouvoir d'achat.Rmd b/module3/exoR/pouvoir d'achat.Rmd index 2beffff..32f9b38 100644 --- a/module3/exoR/pouvoir d'achat.Rmd +++ b/module3/exoR/pouvoir d'achat.Rmd @@ -20,22 +20,16 @@ knitr::opts_chunk$set(echo = TRUE) ``` -## Préparation des données +## Préparation des données et téléchargement Les données du pouvoir d'achat des ouvriers anglais du XVIe au XIXe siècle obtenues à partir du graphique de William Playfair sont disponibles à cette adresse: "https://raw.githubusercontent.com/vincentarelbundock/Rdatasets/master/csv/HistData/Wheat.csv" -Nous les récupérons sous forme d'un fichier en format CSV Nous téléchargeons toujours le jeu de données complet, qui commence en 1984 et se termine avec une semaine récente. L'URL est: +Nous les récupérons sous forme d'un fichier en format CSV à l'URL suivant: +j'ai mis un setwd pour être sûr que R est dans le bon répertoire pour déposer ou lire le fichier. +Les données Wheat.csv sont chargées dans la dataframe "data". +Ces données sont téléchargées au niveau de l'URL uniquement si elle ne sont pas déjà sur le disque dur. + ```{r} data_url = "https://raw.githubusercontent.com/vincentarelbundock/Rdatasets/master/csv/HistData/Wheat.csv" -``` - -Copie locale du fichier faite dans le répertoire module 3 exo1 -le téléchargement sur le site ne se fera que si la sauvergarde locale n'existe pas. -Je suis obligée de faire un setwd car il ne se met pas automatiquement dans le bon répertoire (à revoir dans la configuration du r setup au départ je pense - - - - -```{r} data_file = "Wheat.csv" setwd("C:/Users/berga/Seafile/MOOC/mooc-rr/module3/exoR") @@ -43,26 +37,18 @@ setwd("C:/Users/berga/Seafile/MOOC/mooc-rr/module3/exoR") if (!file.exists(data_file)) { download.file(data_url, data_file, method="auto") } + data = read.csv(data_file) -``` +``` -Voici l'explication des colonnes donnée sur le [sur le site d'origine](https://ns.sentiweb.fr/incidence/csv-schema-v1.json): +## Observation des données -| Nom de colonne | Libellé de colonne | -|----------------+-----------------------------------------------------------------------------------------------------------------------------------| -| `week` | Semaine calendaire (ISO 8601) | -| `indicator` | Code de l'indicateur de surveillance | -| `inc` | Estimation de l'incidence de consultations en nombre de cas | -| `inc_low` | Estimation de la borne inférieure de l'IC95% du nombre de cas de consultation | -| `inc_up` | Estimation de la borne supérieure de l'IC95% du nombre de cas de consultation | -| `inc100` | Estimation du taux d'incidence du nombre de cas de consultation (en cas pour 100,000 habitants) | -| `inc100_low` | Estimation de la borne inférieure de l'IC95% du taux d'incidence du nombre de cas de consultation (en cas pour 100,000 habitants) | -| `inc100_up` | Estimation de la borne supérieure de l'IC95% du taux d'incidence du nombre de cas de consultation (en cas pour 100,000 habitants) | -| `geo_insee` | Code de la zone géographique concernée (Code INSEE) http://www.insee.fr/fr/methodes/nomenclatures/cog/ | -| `geo_name` | Libellé de la zone géographique (ce libellé peut être modifié sans préavis) | +data est composée de 53 observations et 4 variables -La première ligne du fichier CSV est un commentaire, que nous ignorons en précisant `skip=1`. -### Téléchargement +La première colonne "rownames" correspond à un numéro de ligne pour chaque observation. +La colonne "Year" correspond aux années d'observation de 1565 à 1821 avec une relève tous les 5 ans. +La colonne "Wheat" correspond au prix du blé en shillings par quart de boisseau de blé (6,8kg) +La colonne "Wages" correspond au salaire moyen en shillings par semaine Regardons ce que nous avons obtenu: @@ -76,20 +62,36 @@ Y a-t-il des points manquants dans nos données ? na_records = apply(data, 1, function (x) any(is.na(x))) data[na_records,] ``` +Les 3 derniers relevés (1815, 1820 et 1821) ne présentent pas de salaires associés, nous allons donc supprimer ces données et ne conserver que les données allant de 1565 à 1810. -Les deux colonnes qui nous intéressent sont `week` et `inc`. Vérifions leurs classes: +Elimination des 3 dernières valeurs: +j'utilise pour cela le package dplyr qui permet une manipulation aisée des données. Je ne conserve les données que pour les années inférieures à 1815. +Et je vérifie qu'il n'y a plus de données manquantes ```{r} -class(data$week) -class(data$inc) +library(dplyr) +data<-data %>% filter(Year<1815) +na_records = apply(data, 1, function (x) any(is.na(x))) +data[na_records,] ``` -Ce sont des entiers, tout va bien ! +Plus de NA, tout va bien ! -### Conversion des numéros de semaine +### Visualisation des données -La gestion des dates est toujours un sujet délicat. Il y a un grand nombre de conventions différentes qu'il ne faut pas confondre. Notre jeux de données utilise un format que peu de logiciels savent traiter: les semaines en format [ISO-8601](https://en.wikipedia.org/wiki/ISO_8601). En `R`, il est géré par la bibliothèque [parsedate](https://cran.r-project.org/package=parsedate): +Je vais utiliser le package ggplot2 pour effectuer les graphiques demandés ```{r} -library(parsedate) +library(ggplot2) +ggplot(data)+ + theme_classic()+ + geom_col(aes(x=Year, y=Wheat, fill=Wheat))+ + scale_fill_gradient2(low = "white", + high = "thistle4") + + geom_area(aes(x=Year, y=Wages), fill="cornflowerblue", colour="red", linewidth=1)+ + labs(x="année", y="prix du blé et salaire")+ +scale_x_continuous(breaks=seq(1570, 1810, 20)) + + + ``` Pour faciliter le traitement suivant, nous remplaçons ces semaines par les dates qui correspondent aux lundis. Voici une petite fonction qui fait la conversion pour une seule valeur: -- 2.18.1