Les données de Playfair’s Data on Wages and the Price of Wheat sont disponibles à l’adresse suivante: https://raw.githubusercontent.com/vincentarelbundock/Rdatasets/master/csv/HistData/Wheat.csv. Nous les récupérons sous forme d’un fichier en format CSV L’URL est:
data_url = "https://raw.githubusercontent.com/vincentarelbundock/Rdatasets/master/csv/HistData/Wheat.csv"
Je télécharge les données à parir de l’URL du site et je les enregistre en local si je ne l’ai pas déjà fait
data_file = "Playfair-data.csv"
if (!file.exists(data_file)) {
download.file(data_url, data_file, method="auto")
}
Voici l’explication des colonnes donnée sur le sur le site d’origine:
| Nom de colonne | Libellé de colonne |
|---|---|
`| numéro d'ordre des données (integer) | |year| année (intervalle 5 ans) (integer) | |wheat| prix du blé en (Shillings/Quarter bushel) (integer) | |wages` |
salaire hebdomadaire (Shillings): a numeric vector |
| —————- | —————————————————– |
======= #### Lecture je lis le fichier CSV directement sur les données enregistrées localement.
data = read.csv(data_file)
Regardons ce que nous avons obtenu:
head(data)
## X Year Wheat Wages
## 1 1 1565 41.0 5.00
## 2 2 1570 45.0 5.05
## 3 3 1575 42.0 5.08
## 4 4 1580 49.0 5.12
## 5 5 1585 41.5 5.15
## 6 6 1590 47.0 5.25
tail(data)
## X Year Wheat Wages
## 48 48 1800 79 28.5
## 49 49 1805 81 29.5
## 50 50 1810 99 30.0
## 51 51 1815 78 NA
## 52 52 1820 54 NA
## 53 53 1821 54 NA
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,]
## X Year Wheat Wages
## 51 51 1815 78 NA
## 52 52 1820 54 NA
## 53 53 1821 54 NA
On Supprime les 3 dernières lignes sans supprimer le data file
data <- data[-(50:53),]
na_records = apply(data, 1, function (x) any(is.na(x)))
data[na_records,]
## [1] X Year Wheat Wages
## <0 lignes> (ou 'row.names' de longueur nulle)
Les trois colonnes qui nous intéressent sont year, Wheat et Wages. Vérifions leurs classes:
class(data$Year)
## [1] "integer"
class(data$Wages)
## [1] "numeric"
class(data$Wheat)
## [1] "numeric"
Ce sont des valeurs numériques, tout va bien !
####Tracer le graphique
#Tracer le graphique (partie gauche)
##### Ajuster les marges
par(mar=c(6,4,3,5))
barplot(data$Wheat, axes=F, ylim=c(0,100), xlab="", ylab="", xaxs="i", col="white", main="Données de Playfair")
# Légende de l'axe Y de gauche
axis(2, ylim=c(0,100),col="black")
mtext("Prix du 1/4 de boisseau de blé en shilling",side=2,line=2.5)
box() # pour encadrer le graphique
# Ajout de la courbe rouge correspondant à l'axe de droite
par(new=T) # Autorise la superposition des courbes et non le remplacement d'un graphique par un autre
plot(data$Year, data$Wages, pch=10, xlab="", ylab="", ylim=c(0,100), axes=F, type="o", col="red",xaxs="i", yaxs="i",)
# AXE X
xtick<-seq(1565, 1805, by=5)
axis(1,xlim=(1565:1805), at=xtick,las =2 )
#Nom de l'axe des x
mtext("Années",side=1,col="black",line=2.5)
# Legende
legend(x="topleft",legend=c("Salaire hebdomadaire en shilling"),text.col=c("red"),pch=c(10),col=c("red"))
#Surface sous la courbe en rouge
polygon(c(data$Year,max(data$Year),min(data$Year)),c(data$Wages,0,0),col="lightblue",density=NA)
#Tracer le graphique (partie gauche)
##### Ajuster les marges
par(mar=c(6,4,3,5))
barplot(data$Wheat, axes=F, ylim=c(0,100), xlab="", ylab="", xaxs="i", col="white", main="Données de Playfair")
# Légende de l'axe Y de gauche
axis(2, ylim=c(0,100),col="black")
mtext("Prix du boisseau de blé en shilling",side=2,line=2.5)
box() # pour encadrer le graphique
# Ajout de la courbe rouge correspondant à l'axe de droite
par(new=T) # Autorise la superposition des courbes et non le remplacement d'un graphique par un autre
plot(data$Year, data$Wages, pch=10, xlab="", ylab="", ylim=c(0,40), axes=F, type="o", col="red",xaxs="i", yaxs="i",)
# Légende de l'axe Y de droite
mtext("Salaire hebdomadaire en shilling",side=4,col="red",line=2.5)
axis(4, ylim=c(0,40), col="red",col.axis="red")
# AXE X
xtick<-seq(1565, 1805, by=5)
axis(1,xlim=(1565:1805), at=xtick,las =2 )
mtext("Années",side=1,col="black",line=2.5)
D’abord on recalcule les données en rajoutant la colonne Pouvoir d’achat dans notre dataframe
#calcul du nombre de 1/4 de boisseau de blé que l'on pouvait s'acheter avec son salaire hebdomadaire
data$Pouvoir = data$Wages/data$Wheat
data <- data[-(50:53),]
na_records = apply(data, 1, function (x) any(is.na(x)))
data[na_records,]
## [1] X Year Wheat Wages Pouvoir
## <0 lignes> (ou 'row.names' de longueur nulle)
plot(data$Year, data$Pouvoir, pch=10, xlab="", ylab="", ylim=c(0,1), axes=F, type="o", col="red",xaxs="i", yaxs="i",)
# Légende de l'axe Y de gauche
axis(2, ylim=c(0,1),col="black")
mtext("Pouvoir d'achat en 1/4 de boisseau de blé",side=2,line=2.5)
box() # pour encadrer le graphique
# AXE X
xtick<-seq(1565, 1805, by=5)
axis(1,xlim=(1565:1805), at=xtick,las =2 )
mtext("Années",side=1,col="black",line=2.5)
plot(data$Wages, data$Wheat, pch=10, xlab="", ylab="", ylim=c(25,60), xlim=c(4,20),type="p", col="red",xaxs="i", yaxs="i",)
abline(lm(data$Wheat ~data$Wages)$coefficients, col="blue",lwd=2)
Je remercie pour leur aide en ligne: le forum du Cirad : http://forums.cirad.fr/ et Antoine Massé : https://sites.google.com/site/rgraphiques/home