diff --git a/ProjectRFinal.R b/ProjectRFinal.R new file mode 100644 index 0000000..5992c03 --- /dev/null +++ b/ProjectRFinal.R @@ -0,0 +1,163 @@ +library(plyr) +library(dplyr) +library(ggplot2) +library("sf") +library("rnaturalearth") +library("rnaturalearthdata") +library("rgeos") +library(stringr) +library(tidyverse) + + +###################################################################################### +# +# +###################################################################################### + +#Import des températures (partout sur la planète), on ne garde que l'année correspondante. +temp = read.csv("D:/Rstudio/Projects/Data/GlobalTemperatures.csv") +temp$dt <- substring(temp$dt,1,4) +# Calcul de la moyenne par année +MeanYear = ddply(temp, "dt" , summarise, meanYear = mean(na.omit(LandAverageTemperature))) + +# Importation des températures (pas dans l'eau) et mise en forme de l'année. +tempCountries = read.csv("D:/Rstudio/Projects/Data/GlobalLandTemperaturesByCountry.csv") +tempCountries$dt <- substring(tempCountries$dt,1,4) +# Calcul de la moyenne par année, tout pays confondus +MeanTempByYear = ddply(tempCountries, c("dt") , summarise, meanTemp = mean(na.omit(AverageTemperature))) + +# Mise en forme de la moyenne. +ggplot(MeanTempByYear, aes(x=dt , y = meanTemp)) + + geom_path(size = 1 , color = "red", aes(group=1)) + + ggtitle("Evolution de la température moyenne au niveau mondial depuis 1750 (Continent)") + + scale_x_discrete(breaks=seq(1750, 2015, 15)) + + theme(panel.background = element_blank(), axis.line = element_line(colour = "black")) + + ylab("moyenne des températures observées") + + xlab("année") + +# Superposition des 2 courbes +ggplot(MeanTempByYear, aes(x=dt , y = meanTemp)) + + geom_path(size = 1 , color = "red", aes(group=1)) + + geom_line() + + geom_line(data = MeanYear, aes(x=dt , y = meanYear, group=2),color = "blue") + + ggtitle("Comparaison de la température moyenne sur Terre et en Mer") + + theme(panel.background = element_blank(), axis.line = element_line(colour = "black")) + + scale_x_discrete(breaks=seq(1750, 2015, 15)) + + ylab("moyenne des températures observées") + + xlab("année") + +# Calcul de l'année la plus chaude. +x = MeanTempByYear$dt[which.max(MeanTempByYear$meanTemp)] +tempCountries2013 = subset(tempCountries, dt == x) +MeanTemp2013ByCountry = ddply(tempCountries2013, c("Country") , summarise, meanTemp = mean(na.omit(AverageTemperature))) +MeanTemp2013ByCountry = MeanTemp2013ByCountry[order(MeanTemp2013ByCountry$meanTemp, decreasing = TRUE), ] +#On ne garde que les 10 pays les plus chauds +TenHottest2013Countries = head(MeanTemp2013ByCountry,10) + +# Mise en forme de la moyenne. +ggplot(TenHottest2013Countries, aes(x=Country , y = meanTemp, fill=factor(meanTemp))) + + geom_bar(stat = "identity") + + ggtitle("Les 10 pays les plus chauds durant l'année 2013") + + theme(axis.text.x = element_text(color = "blue", size = 15)) + + ylab("moyenne des températures observées") + + xlab("Pays") + +###################################################################################### +# +# +###################################################################################### + +## develop a model +#on enlève les années 1743-1745 +MeanTempByYear = na.omit(MeanTempByYear) +linear_model <- lm( MeanTempByYear$meanTemp ~ MeanTempByYear$dt) +FutureData <- data.frame(2020) +Prediction <- data.frame(predict(linear_model,FutureData)) +print(Prediction) +summary(linear_model) +#Essai peu concluant ... Circulez, il n'y a rien de fonctionnel à voir ! + +###################################################################################### +# +# +##################################################################################### + +MeanTempByYear = ddply(tempCountries, c("dt") , summarise, meanTemp = mean(na.omit(AverageTemperature))) +MeanTempByYear <- MeanTempByYear[-c(1:10), ] +#On plot le résultat obtenu, on décide d'enlever les 10 premières années qui sont très inconsistantes + +new_row = c(2050, 20) +MeanTempByYear = rbind(MeanTempByYear,new_row) +#On ajoute cette valeur afin que notre smooth puisse extrapoler jusqu'en 2050, on replot + +MeanTempByYear <- MeanTempByYear[-c(1:107), ] +# On enlève tous les ans qui ont appartenu à la période dite du "Petit Age glaciaire, ainsi, +# on essaye d'enlever les impacts qui ne dépendant pas de l'activité humaine et de prédire au mieux +# ce qui se serait passé sans cette période. On remarque des résultats plus catastrophiques + +new_row = c(2050, 21) +MeanTempByYear = rbind(MeanTempByYear,new_row) +#On ajoute cette valeur afin que notre smooth puisse extrapoler jusqu'en 2050, on replot + +#En appelant ou non les lignes au dessus de nous, nous obtenons les résultats présentés sur le rapport. +ggplot(MeanTempByYear, aes(x=as.numeric(dt) , y = meanTemp)) + + geom_point() + + ggtitle("Températures terrestres et extrapolation à 40 ans") + + geom_smooth(stat = "smooth", color = "red", method="auto", fullrange = TRUE) + + ylab("moyenne des températures observées") + + xlab("année") + +###################################################################################### +# +# +##################################################################################### + +# Importation des Bases de données et mise en forme de l'année. +LocationTemp = read.csv("D:/Rstudio/Projects/Data/GlobalLandTemperaturesByMajorCity.csv") +LocationTemp$dt <- substring(LocationTemp$dt,1,4) +LocationTemp <- subset(na.omit(LocationTemp), dt == "2003") +#LocationTemp$Latitude[str_sub(LocationTemp$Latitude, -1) == "N"] <-1 +#LocationTemp$Latitude[str_sub(LocationTemp$Latitude, -1) == "S"] <- -LocationTemp$Latitude +TrLocationTemp <- LocationTemp %>% + mutate(Latitude = case_when (str_sub(LocationTemp$Latitude, -1) == "N" ~ str_sub(LocationTemp$Latitude, 0,-2), + (str_sub(LocationTemp$Latitude, -1) == "S" ~ paste("-",str_sub(LocationTemp$Latitude, 0,-2), sep = "")))) %>% + mutate(Longitude = case_when (str_sub(LocationTemp$Longitude, -1) == "E" ~ str_sub(LocationTemp$Longitude, 0,-2), + (str_sub(LocationTemp$Longitude, -1) == "W" ~ paste("-",str_sub(LocationTemp$Longitude, 0,-2),sep = "")))) +#Essai de transformation des données, échec cuisant car ça n'a rien changé mais démarche intéressante + +# Calcul de la moyenne par année +MeanLocationYear = ddply(TrLocationTemp, "Country" , summarise, meanYear = mean(AverageTemperature), Latitude = Latitude, Longitude = Longitude) +world <- ne_countries(returnclass = "sf") + +ggplot() + + geom_sf(data= world) + + geom_point(data = LocationTemp, aes(x = Longitude, y = Latitude)) +#Le plot fonctionne, et grâce à lui, on s'aperçoit que le monde est petit... + +######################################################################################### +# +# +######################################################################################### + +library(countrycode) +continent <- countrycode(sourcevar = MeanTemp2013ByCountry[, "Country"], + origin = "country.name", + destination = "continent") +#import d'un référencement des continents de chaque payes + +continent30 = head(na.omit(continent),30) +# On ne garde que les 30 pays les plus chauds, ainsi que leur continent + +ggplot(data=as.data.frame(continent30), + aes(x = factor(1),fill = factor(continent30))) + + geom_bar(stat = "count") + + ggtitle("Distribution au sein des continents des 30 pays les plus chauds") + + coord_polar(theta='y') + + theme(axis.text.y = element_blank(), + axis.title.y = element_blank(), + axis.ticks.y = element_blank(), + axis.title.x = element_blank()) + + labs(fill = "Continents") +# On plotte la proportion de continents parmi les 30 pays les plus chauds + +################################Fin du code########################################